SQL Server中如何獲取當前年,月,日,時,分,秒
阿新 • • 發佈:2018-11-13
Select GETDATE() as '當前日期',
DateName(year,GetDate()) as '年',
DateName(month,GetDate()) as '月',
DateName(day,GetDate()) as '日',
DateName(dw,GetDate()) as '星期',
DateName(week,GetDate()) as '週數',
DateName(hour,GetDate()) as '時',
DateName(minute,GetDate()) as '分',
DateName(second,GetDate()) as '秒'
結果:
2015-08-17 16:28:21.560 2015 August 17 Monday 34 16 28 21
1.顯示本月第一天
SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0)
select convert(datetime,convert(varchar(8),getdate(),120)+'01',120)
2.顯示本月最後一天
select dateadd(day,-1,convert(datetime,convert(varchar(8),dateadd(month,1,getdate()),120)+'01',120))
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))
3.上個月的最後一天
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))
4.本月的第一個星期一
select DATEADD(wk,DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())),0)
5.本年的第一天
SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0)
6.本年的最後一天
SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))
7.去年的最後一天
SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))
8.本季度的第一天
SELECT DATEADD(qq,DATEDIFF(qq,0,getdate()),0)
9.本週的星期一
SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0)
10.查詢本月的記錄
select * from tableName where DATEPART(mm, theDate) = DATEPART(mm, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())
11.查詢本週的記錄
select * from tableName where DATEPART(wk, theDate) = DATEPART(wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())
12.查詢本季的記錄
select * from tableName where DATEPART(qq, theDate) = DATEPART(qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())
其中:GETDATE()是獲得系統時間的函式。
13.獲取當月總天數:
select DATEDIFF(dd,getdate(),DATEADD(mm, 1, getdate()))
select datediff(day,
dateadd(mm, datediff(mm,'',getdate()), ''),
dateadd(mm, datediff(mm,'',getdate()), '1900-02-01'))
14.獲取當前為星期幾
DATENAME(weekday, getdate())
15. 當前系統日期、時間
select getdate()
16. dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2015-08-15') --返回:2015-08-17 00:00:00.000
17. datediff 返回跨兩個指定日期的日期和時間邊界數。
select datediff(day,'2015-08-01','2015-08-17') --返回:16
18. datepart 返回代表指定日期的指定日期部分的整數。
SELECT DATEPART(month, '2015-08-15') --返回 8
年為year,月為month,日為day,小時hour,分為minute,秒為second
19. datename 返回代表指定日期的指定日期部分的字串
SELECT datename(weekday, '2015-08-15') --返回:星期六
17. day(), month(),year() --可以與datepart對照一下
select 當前日期=convert(varchar(10),getdate(),120),當前時間=convert(varchar(8),getdate(),114)
select datename(dw,'2015-08-15')
select 本年第多少周=datename(week,'2015-08-15'),今天是周幾=datename(weekday,'2015-0815')
函式 引數/功能
GetDate( ) 返回系統目前的日期與時間
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 與date1兩個日期之間的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之後的日期
DatePart (interval,date) 返回日期date中,interval指定部分所對應的整數值
DateName (interval,date) 返回日期date中,interval指定部分所對應的字串名稱
引數 interval的設定值如下:
值 縮 寫(Sql Server) 說明
Year Yy 年 1753 ~ 9999
Quarter Qq 季 1 ~ 4
Month Mm 月1 ~ 12
Day of year Dy 一年的日數,一年中的第幾日 1-366
Day Dd 日,1-31
Weekday Dw 一週的日數,一週中的第幾日 1-7
Week Wk 周,一年中的第幾周 0 ~ 51
Hour Hh 時0 ~ 23
Minute Mi 分鐘0 ~ 59
Second Ss 秒 0 ~ 59
Millisecond Ms 毫秒 0 ~ 999
舉例:
1.GetDate() 用於sql server :select GetDate()
2.DateDiff('s','2015-05-20','2015-7-25 22:56:32')返回值為 514592 秒
DateDiff('d','2015-07-20','2015-7-25 22:56:32')返回值為 5 天
3.DatePart(w,'2015-7-25 22:56:32')返回值為 7 即星期一(週日為1,週六為7)
DatePart(d,'2015-7-25 22:56:32')返回值為 25即25號
DatePart(y,'2015-7-25 22:56:32')返回值為 206即這一年中第206天
DatePart(yyyy,'2015-7-25 22:56:32')返回值為 2015即205年
取系統日期 並將 日期 分開
select 當前日期=convert(varchar(10),dateadd(day,-1,getdate()),120),當前時間=convert(varchar(8),getdate(),114)
---------------------取 年月日
year(),month(),date()
DateName(year,GetDate()) as '年',
DateName(month,GetDate()) as '月',
DateName(day,GetDate()) as '日',
DateName(dw,GetDate()) as '星期',
DateName(week,GetDate()) as '週數',
DateName(hour,GetDate()) as '時',
DateName(minute,GetDate()) as '分',
DateName(second,GetDate()) as '秒'
結果:
2015-08-17 16:28:21.560 2015 August 17 Monday 34 16 28 21
1.顯示本月第一天
SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0)
select convert(datetime,convert(varchar(8),getdate(),120)+'01',120)
2.顯示本月最後一天
select dateadd(day,-1,convert(datetime,convert(varchar(8),dateadd(month,1,getdate()),120)+'01',120))
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))
3.上個月的最後一天
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))
4.本月的第一個星期一
select DATEADD(wk,DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())),0)
5.本年的第一天
SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0)
6.本年的最後一天
SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))
7.去年的最後一天
SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))
8.本季度的第一天
SELECT DATEADD(qq,DATEDIFF(qq,0,getdate()),0)
9.本週的星期一
SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0)
10.查詢本月的記錄
select * from tableName where DATEPART(mm, theDate) = DATEPART(mm, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())
11.查詢本週的記錄
select * from tableName where DATEPART(wk, theDate) = DATEPART(wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())
12.查詢本季的記錄
select * from tableName where DATEPART(qq, theDate) = DATEPART(qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())
其中:GETDATE()是獲得系統時間的函式。
13.獲取當月總天數:
select DATEDIFF(dd,getdate(),DATEADD(mm, 1, getdate()))
select datediff(day,
dateadd(mm, datediff(mm,'',getdate()), ''),
dateadd(mm, datediff(mm,'',getdate()), '1900-02-01'))
14.獲取當前為星期幾
DATENAME(weekday, getdate())
15. 當前系統日期、時間
select getdate()
16. dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2015-08-15') --返回:2015-08-17 00:00:00.000
17. datediff 返回跨兩個指定日期的日期和時間邊界數。
select datediff(day,'2015-08-01','2015-08-17') --返回:16
18. datepart 返回代表指定日期的指定日期部分的整數。
SELECT DATEPART(month, '2015-08-15') --返回 8
年為year,月為month,日為day,小時hour,分為minute,秒為second
19. datename 返回代表指定日期的指定日期部分的字串
SELECT datename(weekday, '2015-08-15') --返回:星期六
17. day(), month(),year() --可以與datepart對照一下
select 當前日期=convert(varchar(10),getdate(),120),當前時間=convert(varchar(8),getdate(),114)
select datename(dw,'2015-08-15')
select 本年第多少周=datename(week,'2015-08-15'),今天是周幾=datename(weekday,'2015-0815')
函式 引數/功能
GetDate( ) 返回系統目前的日期與時間
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 與date1兩個日期之間的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之後的日期
DatePart (interval,date) 返回日期date中,interval指定部分所對應的整數值
DateName (interval,date) 返回日期date中,interval指定部分所對應的字串名稱
引數 interval的設定值如下:
值 縮 寫(Sql Server) 說明
Year Yy 年 1753 ~ 9999
Quarter Qq 季 1 ~ 4
Month Mm 月1 ~ 12
Day of year Dy 一年的日數,一年中的第幾日 1-366
Day Dd 日,1-31
Weekday Dw 一週的日數,一週中的第幾日 1-7
Week Wk 周,一年中的第幾周 0 ~ 51
Hour Hh 時0 ~ 23
Minute Mi 分鐘0 ~ 59
Second Ss 秒 0 ~ 59
Millisecond Ms 毫秒 0 ~ 999
舉例:
1.GetDate() 用於sql server :select GetDate()
2.DateDiff('s','2015-05-20','2015-7-25 22:56:32')返回值為 514592 秒
DateDiff('d','2015-07-20','2015-7-25 22:56:32')返回值為 5 天
3.DatePart(w,'2015-7-25 22:56:32')返回值為 7 即星期一(週日為1,週六為7)
DatePart(d,'2015-7-25 22:56:32')返回值為 25即25號
DatePart(y,'2015-7-25 22:56:32')返回值為 206即這一年中第206天
DatePart(yyyy,'2015-7-25 22:56:32')返回值為 2015即205年
取系統日期 並將 日期 分開
select 當前日期=convert(varchar(10),dateadd(day,-1,getdate()),120),當前時間=convert(varchar(8),getdate(),114)
---------------------取 年月日
year(),month(),date()