如何解决SQL Server:转换和合并单独的日期和时间列均为整数
我正在处理查询,我必须在其中用日期时间值填充表的列([Result_DateTime]
)。
基于两列的日期时间,均为整数。一个包含日期,另一个包含时间。
从图片中可以看到,由于这些值的存储方式,很难将这些值合并并将其转换为实际的日期时间。主要是时间值引起问题。
我总结了如何转换日期列:
CONVERT(DATETIME,LEFT(20200131,8))
但是后来我陷入困境-如何处理时间以及如何将两者有效地合并为一个日期时间?
使用函数STUFF看起来很讨厌...
能帮我一下吗?我正在使用SQL Server 2014
解决方法
以下是一种实现方法:
SELECT CAST(Convert(DATE,LEFT(DATEUPDT,8)) AS VARCHAR(10)) +' '+CAST (TIMEUPDT/100 AS VARCHAR(4)) + ':' + CAST(TIMEUPDT%(100 * (TIMEUPDT/100)) AS VARCHAR(10))+':00'
FROM TEST_TABLE_TIME;
,
我想我找到了一个解决方案。我试图避免使用varchar转换,因为时间列的零是如何被截断的。但是,我不认为这是最有效的方法:
DECLARE @DateInt int = 20200131
DECLARE @TimeInt int = 345 -- 03:45:00
SELECT CONVERT(DATETIME,LEFT(@DateInt,8)) +
CAST(DATEADD(second,FLOOR(@TimeInt / 100) * 3600 + FLOOR(@TimeInt / 1) % 100 * 60,0) as datetime)
我正在用各种时间值测试它,它正在工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。