我有一个包含3列的表格:
Index, Time_start, Time_stop
Time
列的类型为time(7)
。
我需要一个视图(或select语句),它将列出三列以及第四列,如果脚本运行的时刻是In
或Out
每行{1}}和Time_start
。
我尝试使用案例陈述:
Time_stop
但它不起作用。
答案 0 :(得分:0)
您可以将GETDATE()
的值转换为TIME
:
-- you may need to change these times to values relevant to your local time
DECLARE @time1 AS TIME(7) = '12:15'
DECLARE @time2 AS TIME(7) = '16:15'
SELECT @time1 AS Time_start, @time2 AS Time_stop
INTO #tmp_time
SELECT *,
CASE WHEN CONVERT(TIME(7), GETDATE()) BETWEEN Time_start AND Time_stop
THEN 'In'
ELSE 'Out'
END
FROM #tmp_time
DROP TABLE #tmp_time
<强>买者强>
这不会过滤日期,因此我假设您要查询的记录集中的所有记录都是在同一天,否则这将记录其他日期的记录。
答案 1 :(得分:0)
您对CASE
表达式有正确的想法,但您需要评论中提到的TIME
的{{1}}部分:
GETDATE()
答案 2 :(得分:0)
考虑添加计算列&#39; state&#39;用案例陈述
alter table tbl
add column STATE AS
CASE WHEN CAST(GETDATE() AS TIME)
BETWEEN
Time_start AND Time_stop
THEN 'In'
ELSE 'Out'
END