我的表中有From
日期,但我想为其添加修复时间
我正在尝试这样
select cast(FromDate as date) + cast('18:00:00' as time(3)) as StartDT
from WsWmpLeaveReason
但这会导致错误:
操作数数据类型日期对于添加运算符无效。
答案 0 :(得分:6)
使用DATEADD
:
SELECT
DATEADD(HOUR, 18, CAST(CAST(FromDate AS DATE) AS DATETIME)) as StartDT
FROM
WsWmpLeaveReason
有关DATEADD
及其选项
答案 1 :(得分:3)
就像对事物的不同看法一样,我会再次推出我最喜欢的DATEADD
/ DATEDIFF
伎俩:
select DATEADD(day,DATEDIFF(day,'20010101',FromDate),'2001-01-01T18:00:00')
from WsWmpLeaveReason
这是通过计算自2001年1月1日以来的{整数)天数到FromDate
,然后将相同数量的(整数)天添加到2001年1月1日的18:00。这是通过扣除,必须生成与FromDate
具有相同日期的日期,但时间部分固定为18:00。
答案 2 :(得分:1)
我只会使用datetime
并添加:
select cast(cast(FromDate as date) as datetime) + cast('18:00:00' as time(3)) as StartDT
from WsWmpLeaveReason;
如果FromDate
已经缺少时间组件,您可以这样做:
select cast(FromDate as datetime) + cast('18:00:00' as time(3)) as StartDT
from WsWmpLeaveReason;
您可以将time
添加到datetime
,但不能添加到date
。