【问题标题】:How Oracle SQL to get first day of monthOracle SQL 如何获取月份的第一天
【发布时间】:2022-01-22 16:08:35
【问题描述】:

要求是输入日期应该产生当月的第一天。条件是:

  1. 如果输入的日期介于 11 月 1 日到 11 月 30 日之间,则第一天将为 11 月 1 日。
  2. 对于所有其他/下个月,它应该返回相应月份的第 01 天。

例如: 如果我选择 OCT 月和 2021 年,那么 Startinvoice 与 startbilldate 和 endinvoice 相同,从 startinvoice 获取月份的最后一天 但是当我选择 11 月和 2021 年时 Startinvoice = 2021 年 11 月 1 日,endinvoice = 2021 年 11 月 30 日 下个月它应该返回相应月份的第 1 天。 enter image description here

【问题讨论】:

  • 您刚刚大大改变了您的问题。您能否添加一些示例数据来帮助解释您在这里想要什么?
  • 1.如果输入的日期在 1-oct 到 15-oct 之间,那么第一天将是 01-oct。 2. 如果输入的日期在 15-oct 到 31-oct 之间,那么第一天将是 01-oct。 2. 对于所有其他/下个月,它应该返回相应月份的第 01 天。

标签: sql oracle


【解决方案1】:

这些条件基本上是相等的。无论如何,11 月有 30 天,所以您的第一个条件包含在第二个条件中。完全没有区别。

因此,您只需将日期值截断为 ,例如

SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';

Session altered.

SQL> select sysdate,
  2         trunc(sysdate, 'mm') first_of_month
  3  from dual;

SYSDATE             FIRST_OF_MONTH
------------------- -------------------
21.12.2021 09:01:22 01.12.2021 00:00:00

SQL>

【讨论】:

    猜你喜欢
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    相关资源
    最近更新 更多