日期: 2015/1/5 17:05:20 點擊: 標(biāo)簽:
Access日期時間比較查詢語句困擾過很多網(wǎng)友,種豆網(wǎng)整理了一下Access日期比較查詢的幾種方法,假定數(shù)據(jù)表明為TblName,日期/時間字段名為FDate(這里不能講FDate設(shè)置為字符串,否則比較查詢結(jié)果不正確)。
1.Access數(shù)據(jù)表日期字段同日期字符串直接比較
以下是查詢2012年12月12日以后的數(shù)據(jù)的SQL語句。
select * from TblName where DFDate>#2012-12-12#
注意:Access日期查詢時,表示日期的字符串前后要加#
2.Access數(shù)據(jù)表日期字段同日期類型變量直接比較
這種方法其實等同于方法一,以下是查詢比當(dāng)前日期(如2012-12-12)早10天的數(shù)據(jù)的SQL語句。
DateTime queryDate=DateTime.Now.AddDays(-10);
string sql = "select * from TblName where DFDate>#"+queryDate+"#";
3.使用DateDiff函數(shù)對Access日期字段比較查詢
DateDiff,語法如下:
DateDiff( 間隔字符, 日期1, 日期2 [,firstdayofweek[, firstweekofyear]])
通常只需要使用以下方式
DateDiff( 間隔字符, 日期1, 日期2)
這個函數(shù)比較的結(jié)果是“日期2-日期1”,如果日期1晚于日期2,就會返回負(fù)數(shù),其中間隔字符有以下幾種表示方式:
"yyyy" 比較年份
"d" 比較日期
"m" 比較月份
示例如下:
select DateDiff( "d", #2012-12-12#, #2012-12-2#)
SQL查詢結(jié)果是:-10,表示前面的日期比后面的日期晚10天
select DateDiff( "m", #2012-10-12#, #2012-12-2#)
SQL查詢結(jié)果是:2,表示前面的日期比后面的日期早兩個月
select DateDiff( "yyyy", #2012-10-12#, #2010-12-2#)
SQL查詢結(jié)果是:-2,表示前面的日期比后面的日期晚兩年
以下是Access使用DateDiff函數(shù)查詢2012年12月12日以后的數(shù)據(jù)的SQL語句。
select * from TblName where DateDiff( "d", DFDate, #2012-12-12#)<0
4.使用DateDiff函數(shù)查詢Access日期字段等于某個日期的SQL語句
假定數(shù)據(jù)庫中某條記錄的FDate=2012-12-12 12:12:12
以下語句的查詢結(jié)果為0條記錄,因為數(shù)據(jù)庫中還包含時間信息,而查詢條件中無時間信息。
select * from TblName where FDate=#2012-12-12#
如果想得到正確的查詢結(jié)果(1條記錄),則需要使用以下SQL語句查詢(查詢?nèi)掌跒?012年12月12日的數(shù)據(jù)記錄)。
select * from TblName where DateDiff( "d", FDate, #2012-12-12#) <=0 AND DateDiff( "d", FDate, #2012-12-12#)>=0
5.要查詢出簽收時間在處理時間的第二天的14:00:00以前的數(shù)據(jù)
Select 簽收時間,CDate(Format(DateAdd("d", 1,處理時間),"yyyy-mm-dd")+" 14:00:00") from 表 where 簽收時間 < CDate(Format(DateAdd("d", 1, 處理時間),"yyyy-mm-dd")+" 14:00:00")
下面的語句查詢出簽收時間在當(dāng)天或是在第二天的14:00:00之前的所有數(shù)據(jù)
select * from table where DATEDIFF(D,CONVERT(datetime,[處理時間],120),CONVERT(datetime,[簽收時間],120))<1 or ( DATEDIFF(D,CONVERT(datetime,[處理時間],120),CONVERT(datetime,[簽收時間],120))=1 and DATEPART(HOUR,CONVERT(datetime,[簽收時間],120))<14 )
Access數(shù)據(jù)庫和SQL2000 時間日期查詢處理比較方法
access與SqlServer 之時間與日期及其它SQL語句比較
1、Datediff:
1.1算出日期差:
1.access: datediff('d',fixdate,getdate())
2.sqlserver: datediff(day,fixdate,getdate())
ACCESS實例: select * from table where data=datediff('d',fixdate,getdate())
sqlserver實例: select * from table where data=datediff(day,fixdate,getdate())
1.2算出時間差:
1.access: datediff('h',fixdate,getdate())
2.sqlserver: datediff(Hour,'2004-12-10',getdate())
ACCESS實例: select DATEDIFF('h',HMD,getdate())
sqlserver實例: select datediff(Hour,'2004-12-10',getdate())
1.3算出月份差:
1.access: datediff('m',fixdate,getdate())
2.sqlserver: datediff(Month,'2004-12-10',getdate())
ACCESS實例: select DATEDIFF('m',HMD,getdate())
sqlserver實例: select datediff(Month,'2004-12-10',getdate())
2、日期變量
1.access: #"&data&"#
2.sqlserver: '"&data&"'
ACCESS實例: select * from table where data=#"&data&"#
sqlserver實例: select * from table where data='"&data&"'
3、是否
1.access: not finished
2.sqlserver: finished=0
ACCESS實例: select * from table where not finished
sqlserver實例: select * from table where finished=0
4、求余數(shù)
1.access: a mod b=100
2.sqlserver: a % b =100
ACCESS實例: select a mod b=100 from table where not finished
sqlserver實例: select a % b =100 from table where finished=0
5、獲取當(dāng)天日期
1.access: now()
2.sqlserver: getdate()
ACCESS實例: select now()
sqlserver實例: select getdate()