结合日期和时间值(都是日期时间类型)的巧妙方法是什么?
What is the neat approach to combining the date and time value (both of datetime type)?
我正在 table 上写一个 SQL 查询,它有 2 列:
- 开始日期:类型 - 日期时间(示例:2022-01-22 00:00:00.000)
- 开始时间:类型 - 日期时间(示例:1900-01-01 21:30:00.000)
我想将两者结合起来以获得日期时间值(示例:2022-01-22 21:30:00.000)
我尝试使用 DATEADD 函数,但它需要一个间隔,这不符合我的要求table。
我还尝试使用 + 号添加日期,这似乎给出了正确的结果;并尝试将日期转换为 int,然后执行 +,然后转换为日期时间。这没有给出正确的结果。
合并日期和时间值的巧妙方法是什么?
您可以简单地将两部分相加,因为 datetime
的参考日期是 1900-01-01
。即,内部 SQL-Server 用数字 0
.
表示
select
StartDate, StartTime,
StartDate + StartTime as StartDateTime
from t
参见:http://sqlfiddle.com/#!18/0f0a7/2/0
datetime (Transact-SQL) 的文档只是说
Default value 1900-01-01 00:00:00
和
When the conversion is from time(n), the time component is copied, and the date component is set to '1900-01-01'.
我正在 table 上写一个 SQL 查询,它有 2 列:
- 开始日期:类型 - 日期时间(示例:2022-01-22 00:00:00.000)
- 开始时间:类型 - 日期时间(示例:1900-01-01 21:30:00.000)
我想将两者结合起来以获得日期时间值(示例:2022-01-22 21:30:00.000)
我尝试使用 DATEADD 函数,但它需要一个间隔,这不符合我的要求table。
我还尝试使用 + 号添加日期,这似乎给出了正确的结果;并尝试将日期转换为 int,然后执行 +,然后转换为日期时间。这没有给出正确的结果。
合并日期和时间值的巧妙方法是什么?
您可以简单地将两部分相加,因为 datetime
的参考日期是 1900-01-01
。即,内部 SQL-Server 用数字 0
.
select
StartDate, StartTime,
StartDate + StartTime as StartDateTime
from t
参见:http://sqlfiddle.com/#!18/0f0a7/2/0
datetime (Transact-SQL) 的文档只是说
Default value 1900-01-01 00:00:00
和
When the conversion is from time(n), the time component is copied, and the date component is set to '1900-01-01'.