【问题标题】:Oracle SQL - Using SysDate to create a specific dateOracle SQL - 使用 SysDate 创建特定日期
【发布时间】:2014-02-28 16:00:14
【问题描述】:

我需要在 WHERE caluses 中自动生成始终为当前月份和年份的第一天的报告。

“YYYY-MM-01”

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

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

谢谢

【问题讨论】:

  • 所以你只想要当月的第一天?
  • 我这里没有要测试的 Oracle 机器,但 SYSDATE does not accept parameters。您应该收到一条错误消息:-?
  • 谢谢大家。 (Joe / Gordon Linoff)提出的两个解决方案都按预期工作。

标签: sql oracle


【解决方案1】:

要获得当月的第一天(DATE),只需:

trunc(sysdate,'MON')

或者,格式化:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    也就是说,减去一个月中的某天并加一。这样,您就不必弄乱繁琐的日期/字符格式。

    【讨论】:

      猜你喜欢
      • 2013-01-14
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多