*以下语句中的时间字段以“date_test”为例
1、获取“最近”的整点:
使用DATEADD(datepart,number,date)函数(结尾有详细语法说明)来获取一个时间30分钟后的时间DATEADD(mi,30,date_test)
列值为2017-01-01 01:20:00,返回2017-01-01 01:50:00,即整点1点
列值为2017-01-01 01:40:00,返回2017-01-01 02:10:00,即整点2点
2、根据方法1获取的时间,使用DATENAME函数分别取出年份、月份、小时,比如年份DATENAME(YEAR,DATEADD(mi,30,date_test))
3、根据方法2获取的年份、月份、小时,使用’-‘符连接成时间,用 CAST(char as datetime)函数转成时间数据类型
完整代码(代码中以系统当前时间(getdate())为参考时间):select CAST(DATENAME(YEAR,DATEADD(mi,30,getdate()))+'-'+DATENAME(MONTH,DATEADD(mi,30,getdate()))+'-'+DATENAME(DAY,DATEADD(mi,30,getdate()))+' '+DATENAME(HOUR,DATEADD(mi,30,getdate()))+':00:00' AS DATETIME)
DATEADD的语法:--DATEADD(datepart,number,date)——在日期上增加给定日期类型的数量;
select dateadd(yyyy,4,cl_s_time) as '增加4年后' from class --datepart - 年份
yy、yyyy
select dateadd(q,2,cl_s_time) as '增加2季度后' from class
--datepart - 季度
qq、q
select dateadd(mm,3,cl_s_time) as '增加3月度后' from class
--datepart - 月份
mm、m
--datepart - 每年的某一日
dy、y
--datepart - 日期
dd、d
--datepart - 星期
wk、ww
--datepart - 小时
hh
--datepart - 分钟
mi、n
--datepart - 秒
ss、s
--datepart - 毫秒
ms