SQLServer日期函數及查詢當日昨日本周本月本季度本年數據


1. 查詢當日、昨日、本周、本月、本季度、本年數據

-- 查詢今日數據
select count(0) todayCount from alarm_data where DATEDIFF(dd,upload_date,GETDATE())=0
select count(0) todayCount from alarm_data where CONVERT(VARCHAR(10),upload_date,120)=CONVERT(VARCHAR(10),GETDATE(),120)
-- 查詢昨日數據
select count(0) todayCount from alarm_data where DATEDIFF(dd,upload_date,GETDATE()-1)=0
select count(0) yesterdayCount from alarm_data where CONVERT(VARCHAR(10),upload_date,120)=CONVERT(VARCHAR(10),GETDATE()-1,120)
-- 查詢本周數據
select count(0) weekCount from alarm_data where upload_date BETWEEN DATEADD( week, DATEDIFF( week, 0, GETDATE() - 1 ), 0 ) AND GETDATE() 
-- 查詢本月數據
select count(0) monthCount from alarm_data where DATEDIFF(month,upload_date,GETDATE())=0
select count(0) monthCount from alarm_data where CONVERT(VARCHAR(7),upload_date,120)=CONVERT(VARCHAR(7),GETDATE(),120)
-- 查詢本季度數據
select count(0) quarterCount from alarm_data where DATEPART(QQ,upload_date)=DATEPART(QQ,GETDATE()) and DATEPART(YY,upload_date)=DATEPART(YY,GETDATE())
-- 查詢本年數據
select count(0) yearCount from alarm_data where DATEPART(YY,upload_date)=DATEPART(YY,GETDATE())
select count(0) yearCount from alarm_data where CONVERT(VARCHAR(4),upload_date,120)=CONVERT(VARCHAR(4),GETDATE(),120)
select count(0) yearCount from alarm_data where year(upload_date)=year(getdate())

2. 獲取其他日期數據

-- 獲取今天日期(年-月-日)
select 今天日期 = CONVERT(VARCHAR(10),GETDATE(),120)
select 今天日期 = CONVERT(DATETIME,GETDATE(),120)
-- 獲取今日時間 (年-月-日 時:分:秒:毫秒)
select 今日時間 = GETDATE()

-- 獲取昨天日期
select 昨天日期 = CONVERT(VARCHAR(10),GETDATE()-1,120)
-- 獲取本周指定星期的日期
select 本周周一 = DATEADD( week, DATEDIFF( week, 0, GETDATE() - 1 ), 0 )
select 本周周日 = DATEADD( week, DATEDIFF( week, 0, GETDATE() - 1 ), 6 ) 
-- 獲取今天/指定日期的星期數
select 今天的星期數 = DATEPART(ww,GETDATE())
select 今天的星期數 = DATENAME(weekday, GETDATE())
select 本年第多少周 = DATENAME(week,GETDATE())
-- 獲取本月月份
select 本月月份 = DATEPART(MM,GETDATE())
select 本月月份 = month(GETDATE())
-- 獲取上個月最后一天
select 上個月最后一天 = DATEADD(ms,-3, DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))
select 上個月最后一天 = CONVERT(VARCHAR(10),DATEADD(ms,-3, DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)),120)
-- 獲取本季度第一天日期
select 本季度第一天日期 = DATEADD( qq, DATEDIFF (qq, 0, GETDATE()), 0)
select 本季度第一天日期 = CONVERT(VARCHAR(10),DATEADD( qq, DATEDIFF (qq, 0, GETDATE()), 0),120)
-- 獲取今年年份
select 今年年份 = DATEPART(YY,GETDATE())
select 今年年份 = year(GETDATE())
-- 獲取兩個指定時間的時間差
select 相差天數 = DATEDIFF(day,'2008-10-01',GETDATE()) 
select 相差周數 = DATEDIFF(week,'2008-10-01',GETDATE()) 
select 相差月數 = DATEDIFF(month,'2008-10-01',GETDATE())
select 相差年數 = DATEDIFF(year,'2008-10-01',GETDATE())

查詢結果:

3. 日期函數:

函數 功能
Convert(data_type(length),date,style) 把日期轉換為新數據類型,data_type(length)規定目標數據類型(帶有可選的長度),date規定需要轉換的值,style規定日期/時間的輸出格式
GetDate( ) 返回系統目前的日期與時間
DateDiff (datepart,startdate,enddate) 返回兩個日期之間的天數
DateAdd (type,number,date) 以type指定的方式,加上number之后的日期
DatePart (type,date) 返回日期date中,type指定部分所對應的整數值
DateName (type,date) 返回日期date中,type指定部分所對應的字符串名稱
GETDATE() 返回系統目前的日期與時間

3.1 日期函數中參數 type 的設定值:

說明 縮寫(Sql Server) Access 和 ASP
Year Yy yyyy
Quarter Qq q
Month Mm m
年中的日 Day of year Dy y
Day Dd d
周數 Weekday Dw w
第幾周 Week Wk ww
小時 Hour Hh h
分鍾 Minute Mi n
秒鍾 Second Ss s
毫秒 Millisecond Ms -
微秒 Microsecond Mcs -
納秒 Nanosecond Ns -

3.2 Convert(data_type(length),date,style)函數中參數 style 的設定值:

Style ID Style 格式
100 或者 0 mon dd yyyy hh:miAM (或者 PM)
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy
105 dd-mm-yy
106 dd mon yy
107 Mon dd, yy
108 hh:mm:ss
109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110 mm-dd-yy
111 yy/mm/dd
112 yymmdd
113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
120 或者 20 yyyy-mm-dd hh:mi:ss(24h)
121 或者 21 yyyy-mm-dd hh:mi:ss.mmm(24h)
126 yyyy-mm-ddThh:mm:ss.mmm(沒有空格)
130 dd mon yyyy hh:mi:ss:mmmAM
131 dd/mm/yy hh:mi:ss:mmmAM

舉栗子:

SELECT CONVERT(varchar(100), GETDATE(), 0)   --> 01 13 2021 16:17AM
SELECT CONVERT(varchar(100), GETDATE(), 1)   --> 01/13/21
SELECT CONVERT(varchar(100), GETDATE(), 2)   --> 21.01.13
SELECT CONVERT(varchar(100), GETDATE(), 3)   --> 13/01/21
SELECT CONVERT(varchar(100), GETDATE(), 4)   --> 13.01.21
SELECT CONVERT(varchar(100), GETDATE(), 5)   --> 13-01-21
SELECT CONVERT(varchar(100), GETDATE(), 6)   --> 13 01 21
SELECT CONVERT(varchar(100), GETDATE(), 7)   --> 01 13, 21
SELECT CONVERT(varchar(100), GETDATE(), 8)   --> 16:17:46
SELECT CONVERT(varchar(100), GETDATE(), 9)   --> 01 13 2021 16:17:46:827AM
SELECT CONVERT(varchar(100), GETDATE(), 10)  --> 01-13-21
SELECT CONVERT(varchar(100), GETDATE(), 11)  --> 21/01/13
SELECT CONVERT(varchar(100), GETDATE(), 12)  --> 210113
SELECT CONVERT(varchar(100), GETDATE(), 13)  --> 13 01 2021 16:17:46:937
SELECT CONVERT(varchar(100), GETDATE(), 14)  --> 16:17:46:967
SELECT CONVERT(varchar(100), GETDATE(), 20)  --> 2021-01-13 16:17:47
SELECT CONVERT(varchar(100), GETDATE(), 21)  --> 2021-01-13 16:17:47.157
SELECT CONVERT(varchar(100), GETDATE(), 22)  --> 01/13/21 16:17:47 AM
SELECT CONVERT(varchar(100), GETDATE(), 23)  --> 2021-01-13
SELECT CONVERT(varchar(100), GETDATE(), 24)  --> 16:17:47
SELECT CONVERT(varchar(100), GETDATE(), 25)  --> 2021-01-13 16:17:47.250
SELECT CONVERT(varchar(100), GETDATE(), 100) --> 01 13 2021 16:17AM
SELECT CONVERT(varchar(100), GETDATE(), 101) --> 01/13/2021
SELECT CONVERT(varchar(100), GETDATE(), 102) --> 2021.01.13
SELECT CONVERT(varchar(100), GETDATE(), 103) --> 13/01/2021
SELECT CONVERT(varchar(100), GETDATE(), 104) --> 13.01.2021
SELECT CONVERT(varchar(100), GETDATE(), 105) --> 13-01-2021
SELECT CONVERT(varchar(100), GETDATE(), 106) --> 13 01 2021
SELECT CONVERT(varchar(100), GETDATE(), 107) --> 01 13, 2021
SELECT CONVERT(varchar(100), GETDATE(), 108) --> 16:17:49
SELECT CONVERT(varchar(100), GETDATE(), 109) --> 01 13 2021 16:17:49:437AM
SELECT CONVERT(varchar(100), GETDATE(), 110) --> 01-13-2021
SELECT CONVERT(varchar(100), GETDATE(), 111) --> 2021/01/13
SELECT CONVERT(varchar(100), GETDATE(), 112) --> 20210113
SELECT CONVERT(varchar(100), GETDATE(), 113) --> 13 01 2021 16:17:49:513
SELECT CONVERT(varchar(100), GETDATE(), 114) --> 16:17:49:547
SELECT CONVERT(varchar(100), GETDATE(), 120) --> 2021-01-13 16:17:49
SELECT CONVERT(varchar(100), GETDATE(), 121) --> 2021-01-13 16:17:49.700
SELECT CONVERT(varchar(100), GETDATE(), 126) --> 2021-01-13T16:17:49.827
SELECT CONVERT(varchar(100), GETDATE(), 130) --> 18 ???? ?????? 1427 16:17:49:907AM
SELECT CONVERT(varchar(100), GETDATE(), 131) --> 18/04/1427 16:17:49:920AM

Convert(data_type(length),date,style)函數中的參數 data_type(length)

該參數除了使用字符串類型:VARCHAR(length),還可以使用日期類型:DATETIME

select 今天日期 = CONVERT(VARCHAR(100),GETDATE(),120) --> 2021-01-13 16:24:51
select 今天日期 = CONVERT(VARCHAR(10),GETDATE(),120)  --> 2021-01-13
select 今天日期 = CONVERT(VARCHAR(7),GETDATE(),120)   --> 2021-01
select 今天日期 = CONVERT(VARCHAR(4),GETDATE(),120)   --> 2021
select 今天日期 = CONVERT(DATETIME,GETDATE(),120)     --> 2021-01-13 16:24:51.357


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM