【问题标题】:How to remove trailing 0s and offset from Oracle db如何从 Oracle db 中删除尾随 0 和偏移量
【发布时间】:2021-09-30 14:15:14
【问题描述】:

我正在使用包含 date 列的 Oracle 数据库(版本 12c),其日期格式为 YYY-MM-DD H23:Mi:SS

所有日期都存储在 EST 中。

我将这些日期转换为 UTC,因此 2021-09-23 09:12:22 将显示为 2021-09-23 14:12:22

我有以下疑问:

SELECT my_date,
       FROM_TZ(CAST(my_date AS TIMESTAMP), 'America/New_York') AT TIME ZONE 'UTC' AS my_date_utc
FROM my_table

这是我的结果示例:

my_date               my_date_utc
-------------------   -------------------
2018-04-28 21:21:26   2018-04-29 01:21:26.000000 +00:00
2018-12-18 07:42:25   2018-12-18 12:42:25.000000 +00:00

如何从结果中删除“.000000 +00:00”?所以结果会显示为:

my_date               my_date_utc
-------------------   -------------------
2018-04-28 21:21:26   2018-04-29 01:21:26
2018-12-18 07:42:25   2018-12-18 12:42:25

【问题讨论】:

  • 您是要显示没有小数秒和时区信息的结果,还是要将数据类型从“带时区的时间戳”实际更改为“日期”?如果结果只是显示,请将to_char 与所需的格式模型一起使用;如果您确实需要更改数据类型,请在 cast ( .... as date) 中进行包装。
  • @mathguy 我想显示没有小数秒和时区的结果。所以“2018-04-29 01:21:26.000000 +00:00”会显示为“2018-04-29 01:21:26”

标签: database oracle datetime time utc


【解决方案1】:

要以所需的任何(有效)格式显示带有时区的时间戳,您需要使用to_char。像这样的东西(未测试):

SELECT my_date,
       to_char(
         FROM_TZ(CAST(my_date AS TIMESTAMP), 'America/New_York') 
                 AT TIME ZONE 'UTC', 'yyyy-mm-dd hh24:mi:ss') AS my_date_utc
FROM my_table

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 2019-04-05
    • 2021-06-06
    相关资源
    最近更新 更多