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
原文地址:https://www.cnblogs.com/congyiblog/p/14272893.html