1. 程式人生 > >SQL Server中如何獲取當前年,月,日,時,分,秒

SQL Server中如何獲取當前年,月,日,時,分,秒

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()