在一个员工任务应用程序中,我必须找到员工是否按时完成了任务,或者他正在加班,所以我把这些放在一起发现它不工作
SELECT case when (CAST('2011-1-1' as datetime) < cast('2011-1-2' as datetime)) THEN 'Finished' ELSE 'UnFinished' end
日期在这里是硬编码的,因为我想在继续之前先测试一下逻辑。
编辑
对不起,我错过了select语句之前的select,因此出现错误
Incorrect syntax near the keyword 'case'
.
但是现在我想知道是否有更有效的方法来做到以上考虑到比较字段datetime
如果你需要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
不能用IF ?if (CAST('2011-1-1' as datetime) <(将"2011-1-2"作为日期时间))选择"完成"ELSE select 'UnFinished'