我有一个字段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
。因此,您的方法不是特别稳健。要使用日期函数(而不是字符串操作),请检查将日期时间设置为每月的第一天。