sql server 如何将日期时间字段修改成最接近该时间的整点时间?

 我来答
hy1397471
2017-06-01 · 知道合伙人软件行家
hy1397471
知道合伙人软件行家
采纳数:4714 获赞数:17154
15年数据库维护及数据库应用系统开发经验,从事零售业、服务业及财务管理类系统开发与维护。

向TA提问 私信TA
展开全部

*以下语句中的时间字段以“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
ibangbangcn
2015-01-23 · TA获得超过2654个赞
知道大有可为答主
回答量:3368
采纳率:16%
帮助的人:1459万
展开全部
截取即可,datetime字段应该是有到秒的,可以截取部分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2dca20d
2015-01-23 · TA获得超过4036个赞
知道大有可为答主
回答量:2638
采纳率:77%
帮助的人:1023万
展开全部
UPDATE 表 SET  时间列=CAST(DATENAME(YEAR,DATEADD(MINUTE,30,时间列))+'-'+DATENAME(MONTH,DATEADD(MINUTE,30,时间列))+'-'+DATENAME(DAY,DATEADD(MINUTE,30,时间列))+' '+DATENAME(HOUR,DATEADD(MINUTE,30,时间列))+':00:00'  AS DATETIME)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bdzd19933130
2017-03-03 · TA获得超过136个赞
知道小有建树答主
回答量:87
采纳率:100%
帮助的人:39.4万
展开全部
SELECT  CONVERT(VARCHAR(13), DATEADD(hour,
                                     CASE WHEN REPLACE(RIGHT(CONVERT(VARCHAR(100), GETDATE(), 114),
                                                             9), ':', '') >= 3000000
                                          THEN 1
                                          ELSE 0
                                     END, GETDATE()), 25)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式