SQL基础:SQL SERVER常用的日期与时间查询总结

常用的日期查询

—-YYYY
–当前年份第一天的前一天
SELECT TRUNC(SYSDATE,’yyyy’) – 1 + 8 / 24 FROM DUAL—2019/12/31 上午 08:00:00
–当前年份的第一天
SELECT TRUNC(SYSDATE,’yyyy’) + 8 / 24 FROM DUAL—2020/01/01 上午 08:00:00

—-MM
–当前月的第一天
SELECT TRUNC(SYSDATE,’MM’) – 1 + 8 / 24 FROM DUAL—2020/04/30 上午 08:00:00
–当前月的第一天的前一天
SELECT TRUNC(SYSDATE,’MM’) + 8 / 24 FROM DUAL—2020/05/01 上午 08:00:00

—-DD
–当前日的前一天
SELECT TRUNC(SYSDATE,’DD’) – 1 + 8 / 24 FROM DUAL—2020/05/19 上午 08:00:00
SELECT TRUNC(SYSDATE) – 1 + 8 / 24 FROM DUAL—2020/5/19 上午 08:00:00
–当前日
SELECT TRUNC(SYSDATE,’DD’) + 8 / 24 FROM DUAL—2020/05/20上午 08:00:00
SELECT TRUNC(SYSDATE) + 8 / 24 FROM DUAL —2020/5/20 上午 08:00:00

—-D
–当前星期的第一天
SELECT TRUNC(SYSDATE,’D’) FROM DUAL—2020/05/17 当前星期的第一天 {是星期日哦}

—-HH
–当前的时间,精确到小时
SELECT TRUNC(SYSDATE,’HH’) FROM DUAL—2020/05/20 下午 03:00:00
–当前的时间的前一小时
SELECT TRUNC(SYSDATE,’HH’)- 1/24 FROM DUAL—2020/05/20下午 02:00:00

—-MI
–当前时间,精确到分
SELECT TRUNC(SYSDATE,’MI’) FROM DUAL—2020/05/20 下午 03:40:00
–当前时间前一分钟
SELECT TRUNC(SYSDATE,’MI’) -1/24/60 FROM DUAL—2020/05/20 下午 03:39:00

—上周
SELECT TO_CHAR(TRUNC(SYSDATE, ‘IW’) – 7, ‘yyyymmdd’) FROM DUAL
SELECT TO_CHAR(TRUNC(SYSDATE, ‘IW’) – 1, ‘yyyymmdd’) FROM DUAL

—本周
SELECT TO_CHAR(TRUNC(SYSDATE, ‘IW’) , ‘yyyymmdd’) FROM DUAL
SELECT TO_CHAR(TRUNC(SYSDATE, ‘IW’) + 6, ‘yyyymmdd’) FROM DUAL

—上一月的第一天和最后一天
select trunc(add_months(sysdate, -1), ‘mm’) first_day,
last_day(add_months(sysdate, -1)) last_day
from dual
—本月的最后一天
SELECT TO_CHAR(last_day(add_months(sysdate, 0)), ‘yyyymmdd’) FROM DUAL

—当年 第一天
SELECT TO_CHAR(trunc(sysdate, ‘yyyy’), ‘yyyymmdd’) FROM DUAL
—上年最后一天
SELECT TO_CHAR(trunc(sysdate,’iyyy’), ‘yyyymmdd’) FROM DUAL

—当月第一天
SELECT TO_CHAR(trunc(sysdate,’mm’), ‘yyyymmdd’) FROM DUAL
—当月数值
SELECT TO_CHAR(sysdate,’mm’) FROM DUAL

—当周数值
SELECT TO_CHAR(sysdate,’ww’) FROM DUAL

时间查询的方法

1、获取当前时间 

select getdate()

2、截取需要的值

select datepart(year,getdate())

select datepart(month,getdate())

select datepart(day,getdate())

select datepart(hour,getdate())

select datepart(minute,getdate())

select datepart(second,getdate())

select datepart(week,getdate())

3、在日期中添加或减去指定的时间间隔

select dateadd(year,3,getdate()) –获取当前时间,往后推迟三年

select dateadd(month,3,getdate()) –获取当前时间,往后推迟三个月

select dateadd(day,3,getdate()) –获取当前时间,往后推迟三天

select dateadd(hour,3,getdate()) –获取当前时间,往后推迟三小时

select dateadd(minute,3,getdate()) –获取当前时间,往后推迟三分钟

select dateadd(second,3,getdate()) –获取当前时间,往后推迟三秒钟

4、返回两个日期之间的时间

select datediff(year,’2020/11/30′,getdate()) –2001-08-19和当前时间之间差多少年

select datediff(month,’2020/11/30′,getdate()) –2001-08-19和当前时间之间差多少月

select datediff(day,’2020/11/30′,getdate()) –2001-08-19和当前时间之间差多少天

5、用不同的格式显示日期/时间

select convert(char,getdate(),8) –显示当前时:分:秒 “15:00:19″

select convert(char,getdate(),10) –显示当前月-日-年,显示形式“12-01-20”

select convert(char,getdate(),11) –显示当前年-月-日,显示形式“20/12/01”

select convert(char,getdate(),14) –显示当前时-分-秒-毫秒,显示形式“14:58:06:340”

——–

select convert(varchar(100), GETDATE(), 111) — 2020/12/01
select convert(varchar(100), GETDATE(), 112) — 20201201

select convert(varchar(100), GETDATE(), 120) –2020-12-01 15:09:51
select convert(varchar(100), GETDATE(), 121) –2020-12-01 15:10:03.717

select convert(varchar(100), GETDATE(), 111)+’ ‘ + convert(char,getdate(),8)

–select convert(char,getdate(),8)

常用的日期查询

—-YYYY
–当前年份第一天的前一天
SELECT TRUNC(SYSDATE,’yyyy’) – 1 + 8 / 24 FROM DUAL—2019/12/31 上午 08:00:00
–当前年份的第一天
SELECT TRUNC(SYSDATE,’yyyy’) + 8 / 24 FROM DUAL—2020/01/01 上午 08:00:00

—-MM
–当前月的第一天
SELECT TRUNC(SYSDATE,’MM’) – 1 + 8 / 24 FROM DUAL—2020/04/30 上午 08:00:00
–当前月的第一天的前一天
SELECT TRUNC(SYSDATE,’MM’) + 8 / 24 FROM DUAL—2020/05/01 上午 08:00:00

—-DD
–当前日的前一天
SELECT TRUNC(SYSDATE,’DD’) – 1 + 8 / 24 FROM DUAL—2020/05/19 上午 08:00:00
SELECT TRUNC(SYSDATE) – 1 + 8 / 24 FROM DUAL—2020/5/19 上午 08:00:00
–当前日
SELECT TRUNC(SYSDATE,’DD’) + 8 / 24 FROM DUAL—2020/05/20上午 08:00:00
SELECT TRUNC(SYSDATE) + 8 / 24 FROM DUAL —2020/5/20 上午 08:00:00

—-D
–当前星期的第一天
SELECT TRUNC(SYSDATE,’D’) FROM DUAL—2020/05/17 当前星期的第一天 {是星期日哦}

—-HH
–当前的时间,精确到小时
SELECT TRUNC(SYSDATE,’HH’) FROM DUAL—2020/05/20 下午 03:00:00
–当前的时间的前一小时
SELECT TRUNC(SYSDATE,’HH’)- 1/24 FROM DUAL—2020/05/20下午 02:00:00

—-MI
–当前时间,精确到分
SELECT TRUNC(SYSDATE,’MI’) FROM DUAL—2020/05/20 下午 03:40:00
–当前时间前一分钟
SELECT TRUNC(SYSDATE,’MI’) -1/24/60 FROM DUAL—2020/05/20 下午 03:39:00

—上周
SELECT TO_CHAR(TRUNC(SYSDATE, ‘IW’) – 7, ‘yyyymmdd’) FROM DUAL
SELECT TO_CHAR(TRUNC(SYSDATE, ‘IW’) – 1, ‘yyyymmdd’) FROM DUAL

—本周
SELECT TO_CHAR(TRUNC(SYSDATE, ‘IW’) , ‘yyyymmdd’) FROM DUAL
SELECT TO_CHAR(TRUNC(SYSDATE, ‘IW’) + 6, ‘yyyymmdd’) FROM DUAL

—上一月的第一天和最后一天
select trunc(add_months(sysdate, -1), ‘mm’) first_day,
last_day(add_months(sysdate, -1)) last_day
from dual
—本月的最后一天
SELECT TO_CHAR(last_day(add_months(sysdate, 0)), ‘yyyymmdd’) FROM DUAL

—当年 第一天
SELECT TO_CHAR(trunc(sysdate, ‘yyyy’), ‘yyyymmdd’) FROM DUAL
—上年最后一天
SELECT TO_CHAR(trunc(sysdate,’iyyy’), ‘yyyymmdd’) FROM DUAL

—当月第一天
SELECT TO_CHAR(trunc(sysdate,’mm’), ‘yyyymmdd’) FROM DUAL
—当月数值
SELECT TO_CHAR(sysdate,’mm’) FROM DUAL

—当周数值
SELECT TO_CHAR(sysdate,’ww’) FROM DUAL

时间查询的方法

1、获取当前时间 

select getdate()

2、截取需要的值

select datepart(year,getdate())

select datepart(month,getdate())

select datepart(day,getdate())

select datepart(hour,getdate())

select datepart(minute,getdate())

select datepart(second,getdate())

select datepart(week,getdate())

3、在日期中添加或减去指定的时间间隔

select dateadd(year,3,getdate()) –获取当前时间,往后推迟三年

select dateadd(month,3,getdate()) –获取当前时间,往后推迟三个月

select dateadd(day,3,getdate()) –获取当前时间,往后推迟三天

select dateadd(hour,3,getdate()) –获取当前时间,往后推迟三小时

select dateadd(minute,3,getdate()) –获取当前时间,往后推迟三分钟

select dateadd(second,3,getdate()) –获取当前时间,往后推迟三秒钟

4、返回两个日期之间的时间

select datediff(year,’2020/11/30′,getdate()) –2001-08-19和当前时间之间差多少年

select datediff(month,’2020/11/30′,getdate()) –2001-08-19和当前时间之间差多少月

select datediff(day,’2020/11/30′,getdate()) –2001-08-19和当前时间之间差多少天

5、用不同的格式显示日期/时间

select convert(char,getdate(),8) –显示当前时:分:秒 “15:00:19″

select convert(char,getdate(),10) –显示当前月-日-年,显示形式“12-01-20”

select convert(char,getdate(),11) –显示当前年-月-日,显示形式“20/12/01”

select convert(char,getdate(),14) –显示当前时-分-秒-毫秒,显示形式“14:58:06:340”

——–

select convert(varchar(100), GETDATE(), 111) — 2020/12/01
select convert(varchar(100), GETDATE(), 112) — 20201201

select convert(varchar(100), GETDATE(), 120) –2020-12-01 15:09:51
select convert(varchar(100), GETDATE(), 121) –2020-12-01 15:10:03.717

select convert(varchar(100), GETDATE(), 111)+’ ‘ + convert(char,getdate(),8)

–select convert(char,getdate(),8)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


数据运维技术 » SQL基础:SQL SERVER常用的日期与时间查询总结