【发布时间】:2018-03-08 04:52:50
【问题描述】:
对于红移
我在名为workhours 的列中有类似“1:00 PM - 9:15 PM”的字符串。
在 SQL 中将此列中的此类字符串转换为两列(开始时间、结束时间)的最有效方法是什么,类似于:
start_time | end_time
13:00 21:15
我知道第一步是从:
select
split_part(workhours, '-', 1) as start_time,
split_part(workhours, '-', 2) as end_time
但是从这里开始,将“1:00PM”变成“13:00”和“9:15PM”变成“21:15”的最佳方式是什么?
编辑:我还希望解决方案能够自动适应 AM 和 PM,而无需我手动指定哪个(希望有意义)。
提前致谢!
【问题讨论】:
-
不是一个正式的答案,但是您有没有机会以更好的格式将您的日期/时间带入数据库?数据库不太适合这种类型的字符串操作工作。
-
很遗憾,这手牌已经发了:/
-
我建议使用您的应用程序代码将这些字符串转换为时间,然后按照数据库格式存储值,即 13 、 21:15 作为时间数据类型列
标签: sql amazon-redshift