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_ADD
和 DAY
函数计算出当前日期是当前月份的第几天。然后从当前日期里减去该计算结果,并加 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
使用 DATEADD
和 DAY
函数计算出当前日期是当前月份的第几天。然后从当前日期里减去该计算结果,并加 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( ))
函数的返回值,这样就得到了当前月份的最后一天。