sql - 将 unix 日期转换为 24 小时 ISO 格式
问题描述
我正在使用 date_trunc 将 unix 时间转换为更易读的格式。但是,'hour' 的值返回带有尾随 0 的年份和小时。我希望格式只在军事时间显示 hh:mm。我怎样才能做到这一点?
SELECT
actor_id AS SRT_ID,
shift_date,
DATE_TRUNC('hour', from_unixtime(shift_start)) AS login,
DATE_TRUNC('hour', from_unixtime(shift_end)) AS logout
FROM
fct_rep_schedule_details
WHERE
ds BETWEEN '2018-12-01' AND '2019-01-15'
GROUP BY 1,2,3,4
例如,我希望输出13:00
不是2019-01-22 13:00:00.000
.
解决方案
您不想截断日期。您想提取小时/时间。您可以使用以下方法提取时间cast()
:
SELECT actor_id AS SRT_ID,
shift_date,
DATE_TRUNC('hour', from_unixtime(shift_start)) AS login,
DATE_TRUNC('hour', from_unixtime(shift_end)) AS logout,
CAST(from_unixtime(shift_start) as time) AS login_hh,
CAST(from_unixtime(shift_end) as time) AS logout_hh,
FROM fct_rep_schedule_details
WHERE ds BETWEEN '2018-12-01' AND '2019-01-15';
如果要控制时间的格式,请使用to_char()
:
SELECT actor_id AS SRT_ID,
shift_date,
DATE_TRUNC('hour', from_unixtime(shift_start)) AS login,
DATE_TRUNC('hour', from_unixtime(shift_end)) AS logout,
TO_CHAR(from_unixtime(shift_start), 'HH:MI') AS login_hh,
TO_CHAR(from_unixtime(shift_end), 'HH:MI') AS logout_hh,
FROM fct_rep_schedule_details
WHERE ds BETWEEN '2018-12-01' AND '2019-01-15';
推荐阅读
- tfs - 通过克隆 VM 测试 TFS 升级?
- amazon-s3 - 如何将数字海洋空间中的所有文件夹文件权限私有更改为公共?
- c# - 如何在没有麦克风的情况下录制静音
- python - 无法获得带有诅咒的钥匙
- ios - GMSMapView - 模仿谷歌地图应用程序的相机动画
- date - 如何在 Hyperledger Fabric 中获取动态日期时间?
- c# - 未找到范围 (scp) 中的 Azure AD 访问令牌
- hyperledger-fabric - 运行 composer-rest-server 命令后,composer 中出现“Cannot GET /explorer”错误
- php - 如何在 Symfony 3 的安全文件中使用选民
- sql - 在 VBA 中使用 SQL 查询导入 excel 数据会跳过第一行