SQL: триггер типа данных Конфликт между временем и GETDATE () - PullRequest
0 голосов
/ 29 апреля 2011

Я создал триггер, чтобы установить для значения времени столбца типа данных 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();

С уважением.

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

на основе комментария вы не можете неявно приводить время к дате - поэтому вам необходимо преобразовать его вручную:


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))

0 голосов
/ 29 апреля 2011

Для преобразования GetDate () в компонент времени - формат 24 часа.

SELECT CAST(GETDATE() AS time(7)) AS 'time' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...