Oracle SQL 如何获取该月的第一天

Riy*_*ama 3 sql oracle

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

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

例如:如果我选择 10 月份和 2021 年,则 Startinvoice 与 startbilldate 和 endinvoice 相同,从 startinvoice 获取该月的最后一天,但当我选择 11 月份和 2021 年时,Startinvoice = 01 1 1 2021 年,endinvoice = 30 11 2021 下个月它应该返回 01 日相应月份的某一天。 在此输入图像描述

Lit*_*oot 13

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

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

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>
Run Code Online (Sandbox Code Playgroud)