我的表中有From
日期,但我想为其添加修复时间
我正在尝试这样
select cast(FromDate as date) + cast('18:00:00' as time(3)) as StartDT
from WsWmpLeaveReason
但这会导致错误:
操作数数据类型日期对于加法运算符无效。
我的表中有From
日期,但我想为其添加修复时间
我正在尝试这样
select cast(FromDate as date) + cast('18:00:00' as time(3)) as StartDT
from WsWmpLeaveReason
但这会导致错误:
操作数数据类型日期对于加法运算符无效。
使用DATEADD
:
SELECT
DATEADD(HOUR, 18, CAST(CAST(FromDate AS DATE) AS DATETIME)) as StartDT
FROM
WsWmpLeaveReason
有关更多详细信息及其选项,请参阅免费提供的综合 SQL Server 联机丛书文档DATEADD
就像对事物的不同看法一样,我将再次推出我最喜欢的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。
我只会使用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;
您可以将 a 添加time
到 a datetime
,但不能添加到 a date
。