postgresql - 如何通过检查列的时间来创建 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
解决方案
尝试使用::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;
推荐阅读
- material-design - 如何在展开时设置 Angular 材质的 mat-expansion-panel-header 的高度?
- c# - TwoWay Stream 中是否有构建
- php - 无法使用 Apache 路由到 CakePHP 控制器
- c - 将 unsigned short 存储在 char* 中?
- c++ - C++ 多线程错误
- matlab - 优化没有循环的矩阵重组
- javascript - jquery窗口加载功能在加载时不做任何事情
- javascript - NodeJS - 带有数组承诺的 Promise.all() 不会按预期返回
- go - Goroutine 存储通道值没有死锁
- java - 比较两个字符串并找出多余的字符