试图找出一种方法,我可以使用一个案例表达式给我一个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服务器,那么请试试这个。
(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
一种选择是您可以将时间戳转换为日期并在hour
函数中使用它
hour(cast(CREATED_DATE as date))
以下链接将为您提供进一步的想法。