Oracle SQL - 使用SysDate创建特定日期

时间:2014-02-28 16:00:15

标签: sql oracle

我需要自动生成一个报告,该报告将始终是WHERE caluses中当前月份和年份的第一天。

“YYYY-MM-01”

我正在努力实现以下目标,但遗憾的是,我无法使用To_Char / To_Date / SysDate进行任何工作。

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

谢谢

2 个答案:

答案 0 :(得分:5)

要获取当月的第一天(作为DATE),只需:

trunc(sysdate,'MON')

或格式化:

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

答案 1 :(得分:1)

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

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

顺便说一下,你也可以这样计算:

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

即,减去当月的日期并添加一天。这样,你就不必乱七八糟的日期/字符格式。