SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111) ORDER BY dateandtime DESC
本月記錄
SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0 |
本周記錄
SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0 |
當(dāng)天記錄
SELECT * FROM 表 WHERE datediff(day,[dateadd],getdate())=0
sql server中的時(shí)間函數(shù)
1. 當(dāng)前系統(tǒng)日期、時(shí)間 select getdate()
2. dateadd 在向指定日期加上一段時(shí)間的基礎(chǔ)上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,’2004-10-15′) –返回:2004-10-17 00:00:00.000
3. datediff 返回跨兩個(gè)指定日期的日期和時(shí)間邊界數(shù)。 select datediff(day,’2004-09-01′,’2004-09-18′) –返回:17
4. datepart 返回代表指定日期的指定日期部分的整數(shù)。 SELECT DATEPART(month, ’2004-10-15′) –返回 10
5. datename 返回代表指定日期的指定日期部分的字符串 SELECT datename(weekday, ’2004-10-15′) –返回:星期五
6. day(), month(),year() –可以與datepart對(duì)照一下
select 當(dāng)前日期=convert(varchar(10),getdate(),120) ,當(dāng)前時(shí)間=convert(varchar(8),getdate(),114)
select datename(dw,’2004-10-15′)
select 本年第多少周=datename(week,’2004-10-15′) ,今天是周幾=datename(weekday,’2004-10-15′)
函數(shù) |
參數(shù)/功能 |
GetDate( ) |
返回系統(tǒng)目前的日期與時(shí)間 |
DateDiff (interval,date1,date2) |
以interval 指定的方式,返回date2 與date1兩個(gè)日期之間的差值 date2-date1 |
DateAdd (interval,number,date) |
以interval指定的方式,加上number之后的日期 |
DatePart (interval,date) |
返回日期date中,interval指定部分所對(duì)應(yīng)的整數(shù)值 |
DateName (interval,date) |
返回日期date中,interval指定部分所對(duì)應(yīng)的字符串名稱 |
參數(shù) interval的設(shè)定值如下:
值 |
縮 寫(xiě)(Sql Server) |
Access 和 ASP |
說(shuō)明 |
Year |
Yy |
yyyy |
年 1753 ~ 9999 |
Quarter |
Qq |
q |
季 1 ~ 4 |
Month |
Mm |
m |
月1 ~ 12 |
Day of year |
Dy |
y |
一年的日數(shù),一年中的第幾日 1-366 |
Day |
Dd |
d |
日,1-31 |
Weekday |
Dw |
w |
一周的日數(shù),一周中的第幾日 1-7 |
Week |
Wk |
ww |
周,一年中的第幾周 0 ~ 51 |
Hour |
Hh |
h |
時(shí)0 ~ 23 |
Minute |
Mi |
n |
分鐘0 ~ 59 |
Second |
Ss |
s |
秒 0 ~ 59 |
Millisecond |
Ms |
- |
毫秒 0 ~ 999 |
access 和 asp 中用date()和now()取得系統(tǒng)日期時(shí)間;其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,這些函數(shù)的用法也類似
舉例: 1.GetDate() 用于sql server :select GetDate()
2.DateDiff(‘s’,’2005-07-20′,’2005-7-25 22:56:32′)返回值為 514592 秒 DateDiff(‘d’,’2005-07-20′,’2005-7-25 22:56:32′)返回值為 5 天
3.DatePart(‘w’,’2005-7-25 22:56:32′)返回值為 2 即星期一(周日為1,周六為7) DatePart(‘d’,’2005-7-25 22:56:32′)返回值為 25即25號(hào) DatePart(‘y’,’2005-7-25 22:56:32′)返回值為 206即這一年中第206天 DatePart(‘yyyy’,’2005-7-25 22:56:32′)返回值為 2005即2005年
sql 查詢本周本月問(wèn)題 —求相差天數(shù) select datediff(day,’2004-01-01′,getdate())
–1.一個(gè)月第一天的 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
–2.本周的星期一 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
select dateadd(wk,datediff(wk,0,getdate()),6) –3.一年的第一天 SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
–4.季度的第一天 SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
–5.當(dāng)天的半夜 SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
–6.上個(gè)月的最后一天 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
–7.去年的最后一天 SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
–8.本月的最后一天 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate()) 1, 0))
–9.本年的最后一天 SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()) 1, 0))
–10.本月的第一個(gè)星期一 select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
–查詢本周注冊(cè)人數(shù) select count(*) from [user] where datediff(week,create_day-1,getdate())=0
–上周注冊(cè)人數(shù) select count(*) from [user] where datediff(week,create_day-1,getdate())=1
–本月注冊(cè)人數(shù) select count(*) from [user] where datediff(month,create_day,getdate())=0
–上月注冊(cè)人數(shù) select count(*) from [user] where datediff(month,create_day,getdate())=1
–如果要效率,這樣寫(xiě)查詢
–查詢本周注冊(cè)人數(shù) select count(*) from [user] where create_day>=dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112)) and create_day<dateadd(day,9-datepart(weekday,getdate()),convert(varchar,getdate(),112))
–上周注冊(cè)人數(shù) select count(*) from [user] where create_day>=dateadd(day,-5-datepart(weekday,getdate()),convert(varchar,getdate(),112)) and create_day<dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112))
–本月注冊(cè)人數(shù) select count(*) from [user] where create_day>=dateadd(day,1-day(getdate()),convert(varchar,getdate(),112)) and create_day<dateadd(month,1,dateadd(day,1-day(getdate()),convert(varchar,getdate(),112)))
–上月注冊(cè)人數(shù) select count(*) from [user] where create_day>=dateadd(month,-1,dateadd(day,1-day(getdate()),convert(varchar,getdate(),112))) and create_day<dateadd(day,1-day(getdate()),convert(varchar,getdate(),112))
–本周 select count(*) from User where datediff(dd,create_day,getdate()) <= datepart(dw,getdate())
–上周 select count(*) from User where datediff(dd,create_day,(getdate() - datepart(dw,getdate()))) <= 7
–本月 select count(*) from User where datepart(mm,create_day) = datepart(mm,getdate()) –上月 select count(*) from User where datepart(mm,create_day) = datepart(mm,getdate()) - 1 –本周 select count(*) from [User] where datediff(dd,create_day,getdate()) <= datepart(dw,getdate())
–上周 select count(*) from [User] where datediff(dd,create_day,(getdate() - datepart(dw,getdate()))) <= 7
–本月 select count(*) from [User] where datepart(mm,create_day) = datepart(mm,getdate()) –上月 select count(*) from [User] where datepart(mm,create_day) = datepart(mm,getdate()) - 1 學(xué)習(xí) month(create_day)=month(getdate())本月 month(create_day)=month(getdate())-1 上月
補(bǔ)充 查詢今日所有的 SELECT * from feedback WHERE (DATEDIFF(d,fedtime,GETDATE())=0) ORDER BY fedid DESC
Sql 取當(dāng)天或當(dāng)月的記錄 表中的時(shí)間格式是這樣的:2007-02-02 16:50:08.050, 如果直接和當(dāng)天的時(shí)間比較,就總得不到準(zhǔn)確數(shù)據(jù),但是我們可以把這種格式的時(shí)間[格式化]成 2007-02-02,也就是只有年-月-日,然后把當(dāng)天的時(shí)間也格式化成 年-月-日的格式. 這樣,思路就出來(lái)了! 我們格式化日期要用到 Convert()這個(gè)函數(shù),要用到3個(gè)參數(shù),首先來(lái)格式化當(dāng)天的日期,Convert(varchar(10),getDate(),120) 這樣我們就可以把當(dāng)天的日期格式化為: 2007-2-2,然后格式化數(shù)據(jù)庫(kù)表中的日期 Convert(varchar(10),TimeFiled,120),最后我們就可以用一條Sql語(yǔ)句得到當(dāng)天的數(shù)據(jù)了. 例如:
程序代碼
Select * From VIEW_CountBill Where Convert(varchar(10),[time],120) = Convert(varchar(10),getDate(),120)
注意: Convert()函數(shù)中的各個(gè)參數(shù)的意義,第一個(gè)參數(shù),varchar(10)是目標(biāo)系統(tǒng)所提供的數(shù)據(jù)類型,包括 bigint 和 sql_variant。不能使用用戶定義的數(shù)據(jù)類型。第二個(gè)參數(shù)是你要轉(zhuǎn)換的字段,我這里是[time]。最后一個(gè)就是格式了,這個(gè)值是可選的:20或者120都可以,它遵循的是[ODBC 規(guī)范],輸入/輸出樣式為:yyyy-mm-dd hh:mm:ss[.fff] 具體的可以參考Sql Server的聯(lián)機(jī)幫助!
====================================================== T-Sql查找表中當(dāng)月的記錄 思路:將要查找的時(shí)間字段用Month()函數(shù)取出其中的月份,然后再取出當(dāng)前月的月份,對(duì)比就OK了 例:
程序代碼
Select * From VIEW_CountBill Where Month([time]) = Month(getDate())
|