我创建了一个触发器,用于将数据类型为time()的时间值设置为NULL,当它大于GETDATE()时。
我收到一个错误,指示列的数据类型time()和GETDATE()之间存在冲突,因为GETDATE()检索日期和时间。
我的问题是如何只获取GETDATE()的时间部分才能在触发器中使用它?
触发码:
create trigger trig1
on [dbo].[Products]
after insert
as
update Products
set ParkingStartTime = null
from Products
join inserted i
on i.ParkingStartTime = Products.ParkingStartTime
where i.ParkingStartTime >= GETDATE();
问候。
答案 0 :(得分:2)
根据评论,您无法隐式地将时间投射到日期时间 - 因此您需要手动转换它:
create trigger trig1
on [dbo].[Products]
after insert
as
update Products
set ParkingStartTime = null
from Products
join inserted i
on i.ParkingStartTime = Products.ParkingStartTime
where i.ParkingStartTime >= CAST(GETDATE() AS time(7))
答案 1 :(得分:0)
将GetDate()转换为时间组件 - 24Hr格式。
SELECT CAST(GETDATE() AS time(7)) AS 'time'