在员工任务应用程序中,我必须找到员工是否按时完成任务,或者他是否正在加班,所以我把它放在一起以发现它不能正常工作
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'
。
但是现在我想知道是否有更有效的方法可以考虑到比较字段是日期时间
答案 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'