2015-01-19 2 views
0

У меня есть поле endTime имеет тип данных и статус DateTime (int). Я хочу обновить свое поле состояния от 1 до 0, если час и минута от endTime равна часу и минуте текущего времени. день абсолютно такой же. поэтому день не имеет значения.Как сравнить часы и минуты только с данными даты DateTime

Как мне сделать?

ответ

0

Вы можете использовать datepart():

select (case when datepart(hour, EndTime) = datepart(hour, getdate()) and 
        datepart(minute, EndTime) = datepart(minute, getdate()) 
      then 1 else 0 
     end) as status 

Вы также можете поместить это в обновление, если это то, что вы действительно хотите.

EDIT: обновление будет:

update table 
    set status = (case when datepart(hour, EndTime) = datepart(hour, getdate()) and 
          datepart(minute, EndTime) = datepart(minute, getdate()) 
         then 1 else 0 
        end); 
+0

так Ваше предложение уже обновляется? или я должен отредактировать для обновления? – azalikaEriya

+0

Я думаю, что 1 и 0 нужно переключиться? –

+0

Работает ли он для нескольких строк? – azalikaEriya

0

Попробуйте это:

UPDATE <TABLE> 
SET STATUS = 1 
WHERE MINUTE(GETDATE()) = MINUTE(ENDTIME) 
    AND HOUR(GETDATE()) = HOUR(ENDTIME) 
0
UPDATE <table> SET status = 0 
WHERE datepart(hour, endTime) = datepart(hour,getdate()) 
AND datepart(minute, endTime) = datepart(minute,getdate()); 

Это как я на моем SQL-Server 2008.

Смежные вопросы