【发布时间】:2018-12-18 10:50:49
【问题描述】:
我先运行如下命令,得到如下结果:
select to_char(systimestamp, 'YYYY-MM-DD HH24:MI:SS') from dual;
TO_CHAR(SYSTIMESTAM
-------------------
2018-07-10 10:21:40
这是我想要存储 TIMESTAMP 对象的格式。
但是,当我将其转换回来时,它并没有以我想要的格式出现:
select to_timestamp(to_char(systimestamp, 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') from dual;
TO_TIMESTAMP(TO_CHAR(SYSTIMESTA
-------------------------------
10-JUL-18 10.21.40.000000000 AM
实际上,它将 2018 更改为末尾,将 07 设置为“JUL”,而 10 现在位于最前面。时间也用点分隔,有很多 0 和一个 AM。
我该如何解决这个问题?我是 SQL 开发新手,所以我不确定格式。
非常感谢
【问题讨论】:
-
时间戳以内部格式存储。使用
to_char()转换为您喜欢的任何字符串表示形式。 -
我想将数据类型保留为时间戳,以便稍后在需要时对其进行解析(给我从该日期到该日期的记录),例如
-
@KSplitX - 对,这就是 Oracle 的内部表示所做的。您只需将其格式化为可读的字符串,以便最终显示给最终用户。
-
好吧,如果我理解正确的话,datatype 应该仍然是 TIMESTAMP,如果我以后想解析它,我可以写一个 sql 查询,比如 . .. select to_char(timestamp1, format) from my_table where timestamp1 > timestamp2, 这应该返回我想要的任何格式
-
为什么不将 SQL 客户端配置为 显示 时间戳?