日期列的SQL案例表达式,用于将时间戳分类为类别

问题描述 投票:0回答:2

试图找出一种方法,我可以使用一个案例表达式给我一个col,它将日期时间分类为下面的用餐时间类别,

  (CASE
      WHEN hour(order_time_local) < 6 THEN 'late night'
      WHEN hour(order_time_local) >=6 AND hour(order_time_local) < 11 THEN 'breakfast'
      WHEN hour(order_time_local) >=11 AND hour(order_time_local) < 14 THEN 'lunch'
      WHEN hour(order_time_local) >=14 AND hour(order_time_local) < 17 THEN 'mid-day'
      WHEN hour(order_time_local) >=17 AND hour(order_time_local) < 22 THEN  'dinner'
ELSE 'late night'
    END) as mealtime

但是我把它用于一个只有时间的专栏,如果专栏里面还有这一天,我该如何使用呢?如下

    CREATED_DATE
2018-05-18 18:12:16.289
2018-03-29 17:05:46.489
2019-03-28 16:05:19.858
sql timestamp data-analysis presto
2个回答
0
投票

如果你使用SQL服务器,那么请试试这个。

 (CASE
      WHEN  DATEPART(HOUR,order_time_local) < 6 THEN 'late night'
      WHEN  DATEPART(HOUR,order_time_local) >=6 AND  DATEPART(HOUR,order_time_local) < 11 THEN 'breakfast'
      WHEN  DATEPART(HOUR,order_time_local) >=11 AND DATEPART(HOUR,order_time_local) < 14 THEN 'lunch'
      WHEN  DATEPART(HOUR,order_time_local) >=14 AND DATEPART(HOUR,order_time_local) < 17 THEN 'mid-day'
      WHEN  DATEPART(HOUR,order_time_local) >=17 AND DATEPART(HOUR,order_time_local) < 22 THEN  'dinner'
ELSE 'late night'                                   
    END) as mealtime

0
投票

一种选择是您可以将时间戳转换为日期并在hour函数中使用它

hour(cast(CREATED_DATE as date))

以下链接将为您提供进一步的想法。

https://prestosql.io/docs/current/functions/datetime.html

© www.soinside.com 2019 - 2024. All rights reserved.