首页 > 解决方案 > 如何通过检查列的时间来创建 CASE WHEN

问题描述

我在一个表中有一个名为“create_date”的列,该列在 UTC 中提到了日期时间。

实际的:

|create_date|

2019-07-30 14:52:38.0  
2019-07-29 09:49:51.0  
2019-07-30 04:27:56.0  
2019-08-02 16:07:44.0  
2019-08-05 02:30:12.0  
2019-08-03 20:44:14.0 

我想使用 CASE WHEN 创建另一列,条件为“02:30:00.0”和“14:30:00.0”之间的时间为“印度”,ELSE 为“非印度”

预期的:

|create_date|City|

2019-07-30 14:52:38.0 | Not India  
2019-07-29 09:49:51.0 | India  
2019-07-30 04:27:56.0 | India  
2019-08-02 16:07:44.0 | Not India  
2019-08-05 02:30:12.0 | India  
2019-08-03 20:44:14.0 | Not India  

我尝试执行以下查询但没有运气

SELECT create_date,      
CASE WHEN (to_char(create_date, 'HH:MI:SS') BETWEEN '02:30:00' AND '14:30:00') THEN    'India'  
ELSE 'Not India'  
END AS "City"  
FROM TABLE_NAME

标签: postgresql

解决方案


尝试使用::time演员表:

SELECT
    create_date,
    CASE WHEN create_date::time BETWEEN '02:30:00.0' AND '14:30:00.0'
         THEN 'India' ELSE 'Not India' END AS City
FROM TABLE_NAME;

推荐阅读