TSQL Проверка, если дата завершения работы меньше, чем сегодня - PullRequest
0 голосов
/ 29 декабря 2011

В приложении задачи сотрудника я должен выяснить, выполнил ли сотрудник задачу вовремя или он работает сверхурочно, поэтому я собрал это, чтобы убедиться, что она не работает

SELECT case when (CAST('2011-1-1' as datetime) < cast('2011-1-2' as datetime)) THEN 'Finished' ELSE 'UnFinished' end

хорошо, даты здесь жестко запрограммированы, потому что я хотел сначала проверить логику, прежде чем продолжить.

Редактировать

Извините, я пропустил выбор перед оператором выбора, следовательно, ошибка

Incorrect syntax near the keyword 'case'.

Но теперь я хочу знать, есть ли более эффективные способы сделать это, учитывая, что сравниваемые поля datetime

Ответы [ 2 ]

2 голосов
/ 29 декабря 2011

Если вам нужно СЕГОДНЯ, а датой окончания работы является дата-время, то лучше использовать это выражение:

DECLARE @today DATETIME 
SET @today = CONVERT(varchar, GETDATE(), 112)

SELECT 
  case when WorkFinishedAt_Column < @today THEN 'Finished' ELSE 'UnFinished' end
FROM YourTable

OR

если у вас есть только одно значение в переменной

DECLARE @today DATETIME
SET @today = CONVERT(varchar, GETDATE(), 112)

SELECT 
  case when @WorkFinishedAt < @today THEN 'Finished' ELSE 'UnFinished' end
0 голосов
/ 29 декабря 2011

Вы не можете использовать IF? if (CAST ('2011-1-1' в качестве даты и времени)

...