在asp.net应用程序上运行网格视图,我希望它仅在特定时间内显示某些列,
`IF ((datepart(hh, getdate())) between 5 and 18
SELECT
,[Hour5],[Hour6],[Hour7],[Hour8],[Hour9],[Hour10],[Hour11],[Hour12],
[Hour13],[Hour14],[Hour15],[Hour16],[Hour17],[Hour18]
FROM [DB]
IF ((datepart(hh, getdate())) between 18 and 5
SELECT
,[Hour18],[Hour19],[Hour20],[Hour21],[Hour22],[Hour23],[Hour0],
[Hour1],[Hour2],[Hour3],[Hour4],[Hour5]
FROM [DB] `
答案 0 :(得分:0)
表达式datepart(hh, getdate()) between 18 and 5
将始终为false,因为它等同于datepart(hh, getdate()) >= 18 and datepart(hh, getdate()) <= 5
。您可以尝试将其重写为datepart(hh, getdate()) <= 5 or datepart(hh, getdate()) >= 18
- 请注意or
代替上一个示例中的and
。
但是,我怀疑你在这里也有另一个逻辑错误。现在,如果getdate()
介于05:00:00和05:59:59之间,或者getdate()
介于18:00:00和18:59:59之间,那么都你的谓词的em>会得到满足。这是你的意图吗?如果没有,您可以考虑以这种方式构建查询:
if datepart(hh, getdate()) between 5 and 18
select /*stuff*/;
else
select /*other stuff*/;