【问题标题】:How to convert '10-OCT-17 07.57.14.253290000 AM' text into date format '2017-10-10 07:57:14'?如何将“10-OCT-17 07.57.1​​4.253290000 AM”文本转换为日期格式“2017-10-10 07:57:14”?
【发布时间】:2017-11-28 11:28:49
【问题描述】:

我想将10-OCT-17 07.57.14.253290000 AM日期格式转换成2017-10-10 07:57:14

10-OCT-17 12.57.14.253290000 PM日期格式转为2017-10-10 12:57:14

10-OCT-17 07.57.14.253290000 PM日期格式转换成2017-10-10 19:57:14

我希望 AMPM 应该考虑在内。

cast(to_timestamp(pub_ts ,'dd-mon-yy HH.MI.SS') as timestamp without time zone)

其中 pub_ts 是文本。我已经使用了这 15 天,因为它会起作用。

它会转换

10-OCT-17 12.57.14.253290000 PM日期格式转换成2017-10-10 00:57:14

【问题讨论】:

  • 是文本还是实际时间戳?..
  • 你想在哪里转换它们?在你的脑海?在你的应用程序中?什么语言?
  • 另外,您已经对此进行了哪些研究和尝试? “我想要”不是一个问题
  • @VaoTsun 文字。
  • 您忘记在格式掩码中包含 AM 占位符

标签: sql postgresql datetime


【解决方案1】:

我假设你只是need a right mask?例如:

postgres=# with e(v) as (values('10-OCT-17 12.57.14.253290000 PM'),('10-OCT-17 12.57.14.253290000 AM'))
select v,to_timestamp(v,'DD-MON-YY HH12.MI.SS.US000 AM')::timestamp(0) from e;
                v                |    to_timestamp
---------------------------------+---------------------
 10-OCT-17 12.57.14.253290000 PM | 2017-10-10 12:57:14
 10-OCT-17 12.57.14.253290000 AM | 2017-10-10 00:57:14
(2 rows)

【讨论】:

  • 12.57.14.253290000 PM 表示 12.57.14 为什么会出现 00:57:14 结果?我也得到了同样的结果。如果我最后写上午和下午,一个应该是12.57.14 和另一个`00:57:14`。
  • 但是 AM 和 PM 输出应该不同吗?两者都来了 00:57:14
  • 我的错 - 一个错字
  • 感谢您的努力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2016-01-08
  • 2013-10-25
  • 1970-01-01
相关资源
最近更新 更多