将时间戳转换为日期数据类型


SELECT to_date(to_char(SYSTIMESTAMP, 'MM/DD/YYYY'), 'MM/DD/YYYY') FROM DUAL;
==> 04-MAR-16

谁能解释为什么这个选择语句没有导致"03/04/2016"?

如何编写我的选择,以便它确实导致它作为日期类型?我也试过

SELECT to_date(to_char(trunc(SYSTIMESTAMP), 'MM/DD/YYYY'), 'MM/DD/YYYY') FROM DUAL

结果相同。

当查询返回并显示日期时,显然需要以某种方式设置其格式。日期类型值的格式设置方式不是由查询决定的,而是由执行查询并显示结果的工具决定的。

对于 SQL 开发人员,您可以按如下方式设置该格式:

  1. 选择菜单工具>首选项。
  2. 在"首选项"对话框中,从左侧面板中选择"数据库> NLS"。
  3. 从 NLS 参数列表中,输入"月/日/年"
  4. 保存并关闭

另请参阅此问题。

请注意,要将时间戳转换为日期,您只需截断它:trunc(SYSTIMESTAMP) .没有必要将其转换为字符串,然后再转换回日期。

您正在将日期时间转换为字符串并转换回日期。 出于输出目的,系统默认日期格式为 DD-MMM-YY;这是 Oracle 中日期的正常默认值。

请务必了解,日期/时间类型的内部数据结构与它们的呈现方式无关。 因此,如果您希望它采用其他格式,请使用 to_char() 转换为字符串。

如果要更改默认格式,请查看 NLS_DATE_FORMAT 。 文档在这里。

相关内容

  • 没有找到相关文章

最新更新