sql - SQL (HUE) : 有没有办法将 24 小时时间转换为 12 小时 AM / PM 格式与小时桶
问题描述
我有表A,其中包含存储为时间戳数据类型的列时间。
表 A:包含 24 小时格式的 HH:MM:SS 时间列。
Sample data below:
time
12:32:45
16:09:04
09:02:16
18:34:33
08:59:30
Now I want to create a bucket based on hours and adding AM/PM.
eg:
time between 00:00:00 - 00:59:00 = 12 AM,
01:00:00 - 01:59:00 = 01 AM,
14:00:00 - 14:59:00 = 02 PM and so on.
Desired Output :
time new_time
12:32:45 12 PM
16:09:04 04 PM
09:02:16 09 AM
18:34:33 06 PM
08:59:30 08 AM
解决方案
请使用以下代码。替换now()
为time
您的查询。
SELECT now(), lpad(CONCAT (
CAST (extract(hour from now()) + CASE WHEN extract(hour from now()) >12 THEN -12
WHEN extract(hour from now())=0 THEN 12
ELSE 0 END AS string) ,
CASE WHEN extract(hour from now()) >=12 THEN ' PM' ELSE ' AM' END),5,'0') as new_time
解释 - 首先我检查小时是否> 12。如果是,则减去 12 得到小时。
然后根据小时设置 AM/PM。
lpad 用于确保您获得 01 AM 格式的数据。
推荐阅读
- python - 如何通过后向关系访问 Django 模型字段?
- sqlite - 在 sqlite 中查找两个时间戳之间的差异以获取下载时间
- r - 使用 R 官员包在 docx 中保留段落编号
- makefile - 通过文件中的顺序覆盖 Makefile 中的目标是否合法?
- android - 意式浓缩咖啡(hasComponent(...))在简单示例中不起作用
- c++ - 将项目从 VS2008 迁移到 VS2013
- flutter - 如何观察 ObservableList 项属性的变化
- python - 无法在 Python 中反序列化 protobuf 二进制文件(由 Nodejs 创建)
- c# - Azure Batch并在c#中确定计算节点上下载的EXE的路径
- python - ImportError:无法导入名称“export_tflite_ssd_graph_lib”