Oracle SQL 回滚日期到月初最佳实践 CONCAT & SUBSTR 或 TRUNC



我有一个字段date这是一种日期格式。

例如,它像这样输出。

09-NOV-14

现在我希望输出是任何回滚到其月份 1 日的日期。

01-NOV-14

我为实现这一目标所做的是

CONCAT('01',SUBSTR(table.date,3))

这是最有效/最佳实践的方法吗?

从注释移动到答案:

trunc(date,'month')

日期转换为字符串时获得的输出格式是可配置的:

SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
---------
26-NOV-14
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
-------------------
2014-11-26 16:15:44

。因此,您的方法不是特别稳健。要使用日期函数(而不是字符串操作),请检查将日期时间设置为每月的第一天。

最新更新