TSQL检查工作完成日期是否小于今天

时间:2011-12-29 04:57:12

标签: sql-server-2005 tsql datetime datediff

在员工任务应用程序中,我必须找到员工是否按时完成任务,或者他是否正在加班,所以我把它放在一起以发现它不能正常工作

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

这里的日期是硬编码的,因为我想在继续之前先测试逻辑。

修改

抱歉,我错过了select语句之前的选择错误

Incorrect syntax near the keyword 'case'

但是现在我想知道是否有更有效的方法可以考虑到比较字段是日期时间

2 个答案:

答案 0 :(得分:2)

如果您需要TODAY并且完成的工作日期是datetime,那么最好使用以下表达式:

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

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

如果变量中只有一个值

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

SELECT 
  case when @WorkFinishedAt < @today THEN 'Finished' ELSE 'UnFinished' end

答案 1 :(得分:0)

你不能使用IF? if(CAST('2011-1-1'as datetime)&lt; cast('2011-1-2'as datetime))  选择'完成' ELSE选择'UnFinished'