【问题标题】:Eliminate hours, minutes and seconds from a date in SQL ORACLE从 SQL ORACLE 中删除日期的小时、分钟和秒
【发布时间】:2026-01-07 21:30:02
【问题描述】:

我正在尝试使用以下代码从日期中删除小时、分钟和秒:

TRUNC(column_date, 'YY')

但我得到了这个:01JAN2008:00:00:00,而我想要这个:01JAN2008

我该怎么办?

【问题讨论】:

  • 如果它的Oracle为什么要添加MySQL标签??请不要垃圾标签

标签: sql oracle datetime


【解决方案1】:

TRUNC() 按预期工作,并返回截断为年份的原始日期,作为 日期数据类型。您想在显示之前格式化此日期(这实际上意味着将其转换为字符串)。为此,您可以使用TO_CHAR() 函数。

你可能想要:

 TO_CHAR(TRUNC(column_date, 'YY'), 'ddmonyyyy')

请注意,此表达式可以简化以避免使用TRUNC(),如下:

 '01JAN' || TO_CHAR(column_date, 'yyyy')

【讨论】:

  • 不再需要TRUNC :-)
  • @dnoeth:是的,绝对......我刚刚更新了我的答案。
【解决方案2】:

我想你想要to_char:https://docs.oracle.com/database/121/SQLRF/functions216.htm#SQLRF06129

尝试以这种方式使用它:

SELECT TO_CHAR(column_date, 'DD/MON/YYYY')
FROM x;

其中 x 是您要查询的表。

【讨论】:

    【解决方案3】:

    你只需要使用

    select to_char(column_date,'ddMONyyyy') FROM yourTable
    

    即使你可以调用

    select to_char(column_date,'ddMONyyyy','nls_date_language=english') FROM yourTable
    

    保证在您的session/system日期语言值不同于english的情况下看到缩写JAN

    按预期显示。

    【讨论】:

      最近更新 更多