从 varchar 转换为 datetime 以进行排序
Posted
技术标签:
【中文标题】从 varchar 转换为 datetime 以进行排序【英文标题】:Conversion from varchar to datetime for sorting 【发布时间】: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
。您当前的问题就是一个很好的例子,为什么不
【参考方案1】:
将字符串转换为TIMESTAMP
,如下所示:
TO_TIMESTAMP_TZ(updatedtimestamp,'DD-MON-YY HH.MI.SS.FF AM TZH:TZM', 'NLS_DATE_LANGUAGE = american')
如果您使用它进行排序,那么它将基于 UTC 时间,而不是本地时间值。
【讨论】:
感谢它的工作。在 oracle 列中存储日期/日期时间值的最佳做法是什么。 你说这个问题是认真的吗???检查DATE
和TIMESTAMP ...
数据类型:docs.oracle.com/database/121/SQLRF/…以上是关于从 varchar 转换为 datetime 以进行排序的主要内容,如果未能解决你的问题,请参考以下文章
将 VARCHAR 转换为 Datetime 并将 VARCHAR 转换为 Decimal 时创建外部表错误
从 Excel 导入 SQL Server:将 varchar 数据类型转换为 datetime 数据类型导致值超出范围
从varchar数据类型到datetime数据类型的转换产生一个超出该范围的值