【发布时间】:2021-10-22 08:14:28
【问题描述】:
我有一个日期和时间分别存储在日期时间列中的数据库(不是我的想法)。我需要将它们的值组合到另一个带有日期时间列的表中。就这么简单,我就是做不到。
我可以得到我的日期值:
cast(sampledate as date) -- returns '2014-11-01'
还有我的日期值:
cast(CollectionTime as time) -- returns '06:46:00.0000000'
我尝试了几种不同的方式将它们组合在一起,看起来不错。
例如:
concat(cast(sampledate as date) , ' ' , cast(CollectionTime as time)) -- returns '2014-11-05 08:14:00.0000000'
但是当我尝试将它插入到日期时间列中,甚至只是将其转换为日期时间值时,它不起作用:
cast(concat(cast(sampledate as date) , ' ' , cast(CollectionTime as time)) as datetime)
-- I get the error 'Conversion failed when converting date and/or time from character string.'
This link 警告我不要使用 FORMAT 功能,而且我去过其他一些网站,告诉我不要做什么,但我似乎无法做这个简单的事情。任何人都可以帮忙吗?谢谢。
编辑:想通了。 This link 解决了旧版本的 SQL,但不是当前版本。但是,如果您转换为 datetime2(0),而不是 datetime,它可以正常工作。
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/questions/18622384/…
-
Hassan,谢谢,那些曾经在 SQL2008 中工作的人,但我已经尝试过了,它似乎在 2016 年不起作用。应该在我的问题中指定。
-
重复链接 fiddle 在当前版本的 sql server 中工作得很好
-
您可以简单地将两个元素转换为日期时间并将它们相加。看看stackoverflow.com/questions/68519014/…
标签: sql-server date datetime time casting