SQL 计算一个月的第一天和最后一天

SQL 计算一个月的第一天和最后一天,你希望知道当前月份的第一天和最后一天。

SQL 计算一个月的第一天和最后一天 问题描述

你希望知道当前月份的第一天和最后一天。

SQL 计算一个月的第一天和最后一天 解决方案

这里给出的解决方案是找出当前月份的第一天和最后一天。其实,并非一定要选择当前月份。略微改动一下的话,本方案就能适用于任何月份。
DB2
使用 DAY 函数计算出当前日期是当前月份的第几天。用当前日期减去该值,并加上 1,就得到了当前月份的第一天。为了获取当前月份的最后一天,再次针对当前日期调用 DAY 函数,然后在当前日期的基础上加上 1 个月,并减去上述 DAY 函数调用的返回值。

1 select (current_date - day(current_date) day +1 day) firstday,
2        (current_date +1 month -day(current_date) day) lastday
3   from t1

Oracle
使用 TRUNC 函数找出当前月份的第一天,并使用 LAST_DAY 函数找出当前月份的最后一天。

1 select trunc(sysdate,'mm') firstday,
2        last_day(sysdate) lastday
3   from dual

上述调用 TRUNC 函数会丢掉日期值里原本包含的时间部分,而 LAST_DAY 函数则会保留时间值。

PostgreSQL
针对当前日期调用 DATE_TRUNC 函数得到当前月份的第一天。既然知道了当前月份的第一天,先加上 1 个月,再减去 1 天,这样就得到了当前月份的最后一天。

1 select firstday,
2        cast(firstday + interval '1 month'
3                      - interval '1 day' as date) as lastday
4   from (
5 select cast(date_trunc('month',current_date) as date) as firstday
6   from t1
7        ) x

MySQL
使用 DATE_ADDDAY 函数计算出当前日期是当前月份的第几天。然后从当前日期里减去该计算结果,并加 1,就得到了当前月份的第一天。为了得到当前月份的最后一天,则使用 LAST_DAY 函数。

1 select date_add(current_date,
2                 interval -day(current_date)+1 day) firstday,
3        last_day(current_date) lastday
4   from t1

SQL Server
使用 DATEADDDAY 函数计算出当前日期是当前月份的第几天。然后从当前日期里减去该计算结果,并加 1,就得到了当前月份的第一天。为得到当前月份最后一天,再次针对当前日期调用 DAY 函数,然后再次调用 DATEADD 函数在当前日期的基础上加上 1 个月,并减去上述调用 DAY 函数的返回值。

1 select dateadd(day,-day(getdate())+1,getdate()) firstday,
2       dateadd(day,
3               -day(getdate( )),
4               dateadd(month,1,getdate())) lastday
5   from t1

SQL 计算一个月的第一天和最后一天 扩展知识

DB2
为了得到一个月的第一天,调用 DAY 函数。有了 DAY 函数,就能方便地知道给定日期是当前月份的第几天。如果用当前日期减去 DAY(CURRENT_DATE) 函数调用的返回值,我们将得到上个月的最后一天;在此基础上加上 1 天的话,就能算出当前月份的第一天。为找出一个月的最后一天,要先在当前日期的基础上加上 1 个月。这将得到下个月的同一天(即使接下来的一个月天数少于当前月份,该数学计算仍将返回正确的结果)。然后减去 DAY(CURRENT_DATE) 函数调用的返回值,就得到了当前月份的最后一天。
Oracle
为了得到当前月份的第一天,调用 TRUNC 函数,并把 mm 作为第二个参数,这样就能“截断”当前日期得到当前月份的第一天。为获取当前月份的最后一天,只需调用 LAST_DAY 函数即可。
PostgreSQL
为得到当前月份的第一天,调用 DATE_TRUNC 函数,并把 month 作为第二个参数,这样就能“截断”当前日期得到当前月份的第一天。为获取当前月份的最后一天,在当前月份第一天的基础上加上 1 个月,然后再减去 1 天即可。
MySQL
为了得到当前月份的第一天,调用 DAY 函数。有了 DAY 函数,就能方便地知道给定日期是当前月份的第几天。如果用当前日期减去 DAY(CURRENT_DATE) 函数调用的返回值,我们将得到上个月的最后一天;在此基础上加上 1 天的话,就能算出当前月份的第一天。为获取当前月份的最后一天,只要调用 LAST_DAY 函数即可。
SQL Server
为了得到一个月的第一天,调用 DAY 函数。有了 DAY 函数,就能方便地知道给定日期是当前月份的第几天。如果用当前日期减去 DAY(GETDATE( )) 函数调用的返回值,我们将得到上个月的最后一天;在此基础上加上 1 天的话,就能计算出当前月份的第一天。为了获取当前月份的最后一天,需要调用 DATEADD 函数。在当前日期的基础上加上 1 个月,然后减去调用 DAY(GETDATE( )) 函数的返回值,这样就得到了当前月份的最后一天。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程