【问题标题】:Converting a varchar field into a date field将 varchar 字段转换为日期字段
【发布时间】:2017-10-01 12:40:54
【问题描述】:

需要帮助将 varchar 字段转换为时间戳。

该字段的格式为'5/2/2017 9:45:29 AM' 所以MM/DD/YYYY HH:MI:SS AM

我可以获取年、月和日,但无法获取小时、分钟和秒。这就是我所做的:

SELECT
    '5/2/2017 9:45:29 AM' as data
    , to_date('5/2/2017 9:45:29 AM', 'MM/DD/YYYY HH24:MI:SS')
    , to_char(to_date('5/2/2017 9:45:29 AM', 'MM/DD/YYYY HH12:MI:SS PM'), 'YYYYMMDD')

返回:

data                | to_date             | to_char
------------------------------------------------------------
5/2/2017 9:45:29 AM | 2017-05-02 00:00:00 | 20170502

我一直在玩to_date 函数,但无法正常工作。我也包含了AM,但这没有任何作用。目前不知道还能尝试什么

【问题讨论】:

  • select cast('5/2/2017 9:45:29 AM' as timestamp)?..

标签: sql date timestamp amazon-redshift


【解决方案1】:

到时间戳:

t=# select cast('5/2/2017 9:45:29 AM' as timestamp);
      timestamp
---------------------
 2017-05-02 09:45:29
(1 row)

您可以将其转换为时间戳,然后转换为时间:

t=# with t as (
  with v as (
    select '5/2/2017 9:45:29 AM'::text v
  )
  select v::timestamp t
  from v
)
select t::date to_date, t::time to_time, t to_timestamp
from t;
  to_date   | to_time  |    to_timestamp
------------+----------+---------------------
 2017-05-02 | 09:45:29 | 2017-05-02 09:45:29
(1 row)

【讨论】:

  • 完美 - 我从没想过要先转换为时间戳。
猜你喜欢
  • 1970-01-01
  • 2020-01-02
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多