【问题标题】:Conversion from varchar to datetime for sorting从 varchar 转换为 datetime 以进行排序
【发布时间】:2018-01-04 08:33:48
【问题描述】:

我有 varchar 数据类型的列。其中包含如下格式的日期:

04-JAN-18 11.23.32.195734 AM +05:30

我需要根据最新的时间戳对行进行排序。使用什么功能?

SELECT *
FROM ent_organizations
order by TO_TIMESTAMP(updatedtimestamp,'YYYY-MON-DD HH.MI.SS.FF') desc

ORA-01830: 日期格式图片在转换整个输入之前结束 细绳 01830. 00000 - “日期格式图片在转换整个输入字符串之前结束” *原因:
*行动:

【问题讨论】:

  • 为什么要将日期/时间值存储在 varchar 列中?
  • 永远不要将时间戳存储为varchar。您当前的问题就是一个很好的例子,为什么不

标签: sql oracle oracle11g


【解决方案1】:

将字符串转换为TIMESTAMP,如下所示:

TO_TIMESTAMP_TZ(updatedtimestamp,'DD-MON-YY HH.MI.SS.FF AM TZH:TZM', 'NLS_DATE_LANGUAGE = american') 

如果您使用它进行排序,那么它将基于 UTC 时间,而不是本地时间值。

【讨论】:

  • 感谢它的工作。在 oracle 列中存储日期/日期时间值的最佳做法是什么。
  • 你说这个问题是认真的吗???检查DATETIMESTAMP ... 数据类型:docs.oracle.com/database/121/SQLRF/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 2019-08-26
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多