2014-02-28 14 views
0

我需要自动执行报告,该报告始终是WHERE caluses当前月份和年份的第一天。Oracle SQL - 使用SysDate创建特定日期

“YYYY-MM-01”

我想达到以下,但可悲的是,我不能得到任何使用TO_CHAR/TO_DATE/SYSDATE工作。

to_date(SYSDATE('YYYY-MM') + '-01', 'yyyy-mm-dd') 

谢谢

+0

所以你只想当月的第一天? – Joe

+0

我没有一个Oracle框在这里测试,但'SYSDATE' [不接受参数](http://www.techonthenet.com/oracle/functions/sysdate.php)。您应该收到错误消息: - ? –

+0

谢谢大家。 (Joe/Gordon Linoff)提出的两个解决方案都按预期工作。 – Alexandre

回答

4

要获得当月的第一天(作为DATE),简单地说:

trunc(sysdate,'MON') 

,或者格式化:

to_char(trunc(sysdate,'MON'),'yyyy-mm-dd') 
1

Oracle中的字符串连接运算符是||,不+。而SYSDATE是一个常量不是一个函数:

to_date(to_char(SYSDATE, 'YYYY-MM') || '-01', 'yyyy-mm-dd') 

顺便问一下,你也可以做到这一点的计算为:

trunc(sysdate - extract(day from sysdate) + 1) 

也就是说,减去该月的一天,添加一个。这样,你不必乱七八糟的日期/字符格式。