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