我需要自动执行报告,该报告始终是WHERE caluses当前月份和年份的第一天。Oracle SQL - 使用SysDate创建特定日期
“YYYY-MM-01”
我想达到以下,但可悲的是,我不能得到任何使用TO_CHAR/TO_DATE/SYSDATE工作。
to_date(SYSDATE('YYYY-MM') + '-01', 'yyyy-mm-dd')
谢谢
我需要自动执行报告,该报告始终是WHERE caluses当前月份和年份的第一天。Oracle SQL - 使用SysDate创建特定日期
“YYYY-MM-01”
我想达到以下,但可悲的是,我不能得到任何使用TO_CHAR/TO_DATE/SYSDATE工作。
to_date(SYSDATE('YYYY-MM') + '-01', 'yyyy-mm-dd')
谢谢
要获得当月的第一天(作为DATE
),简单地说:
trunc(sysdate,'MON')
,或者格式化:
to_char(trunc(sysdate,'MON'),'yyyy-mm-dd')
Oracle中的字符串连接运算符是||
,不+
。而SYSDATE
是一个常量不是一个函数:
to_date(to_char(SYSDATE, 'YYYY-MM') || '-01', 'yyyy-mm-dd')
顺便问一下,你也可以做到这一点的计算为:
trunc(sysdate - extract(day from sysdate) + 1)
也就是说,减去该月的一天,添加一个。这样,你不必乱七八糟的日期/字符格式。
所以你只想当月的第一天? – Joe
我没有一个Oracle框在这里测试,但'SYSDATE' [不接受参数](http://www.techonthenet.com/oracle/functions/sysdate.php)。您应该收到错误消息: - ? –
谢谢大家。 (Joe/Gordon Linoff)提出的两个解决方案都按预期工作。 – Alexandre