首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SQL中查找时间戳是上午、下午或晚上

如何在SQL中查找时间戳是上午、下午或晚上
EN

Stack Overflow用户
提问于 2019-03-01 05:45:28
回答 1查看 2.3K关注 0票数 1

我必须找出表中的时间戳是上午、下午还是晚上。目前,我有以下代码:

代码语言:javascript
运行
复制
case 
   when datepart(hour, o.timestamp) between 5 and 12 
      then 'Morning' 
   when datepart(hour, o.timestamp) between 13 and 17 
      then 'Afternoon' 
   when datepart(hour, o.timestamp) > 17 
      then 'Evening' 
end

上面代码的问题是,2018-08-03 17:30:00.000是下午而不是晚上。这是因为2018-08-03 17:30:00.000中的小时是17,所以它被评估为下午。相反,我想包括分钟部分,然后它将成为晚上。

EN

回答 1

Stack Overflow用户

发布于 2019-03-01 05:49:16

时间比较怎么样?

代码语言:javascript
运行
复制
(case when convert(time, o.timestamp) >= '05:00:00' and
           convert(time, o.timestamp) < '12:00:00'
      then 'morning'
      when convert(time, o.timestamp) >= '12:00:00' and
           convert(time, o.timestamp) < '17:00:00'
      then 'afternoon'
      else 'evening'
 end)

请注意,您的逻辑没有考虑午夜到凌晨5点之间的时间。

你可以用小时本身做一些类似的事情,但我认为时间对你来说不会那么混乱。另外,我不知道早上的界限是中午还是下午1点。您的查询建议边界是下午1:00。常识告诉我们应该是中午。这在case表达式中很容易调整。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54934771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档