sql 语句系列(闰年)[八百章之第十九章]
SQL 系列 语句 闰年 八百 第十九章
2023-09-14 08:59:24 时间
前言
判断闰年还是挺有用的。
mysql
select DAY(LAST_DAY(DATE_ADD(CURRENT_DATE,INTERVAL -DAYOFYEAR(CURRENT_DATE)+1+31 DAY))) as dy
FROM T1
这个看起来有一点点复杂,其实拆开了还是很简单的。
CURRENT_DATE 获取当前日期。
DATE_ADD(CURRENT_DATE,INTERVAL -DAYOFYEAR(CURRENT_DATE)+1+31 DAY)
当前的日期,减去了从1月1号经历的天数然后加1,这个获得的就是1月1号。因为1月有31天,所以加上31,那么就是今年的2月1号。
LAST_DAY 是获取该月的最后一天。所以就能够得出2月最后一天的日期了。
sql server
with x(dy,mth) as
(
select dy,MONTH(dy)
from(
select dateadd(MM,1,(getdate()-datepart(dy,getdate()))+1) dy
from T1) tmp1
union all
select dateadd(dd,1,dy),mth
from x
where MONTH(dateadd(dd,1,dy))=mth
)
select MAX(DAY(dy))
from x
这么一看有点复杂,原理是一样的。
select dateadd(MM,1,(getdate()-datepart(dy,getdate()))+1) dy
from T1
获取2月第一天,第一步和mysql是一致的。
然后就是递归2月的每一天,得出最后一天是28还是29。
相关文章
- sql 语句系列(每个季度的开始日期和结束日期)[八百章之第二十二章]
- sql 语句系列(月份的第一个星期的星期一和最后一个星期的星期一)[八百章之第二十一章]
- sql 语句系列(月份的第一天和最后一天)[八百章之第二十章]
- sql 语句系列(null 值处理)[八百章之第二章]
- SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析)
- sql 语句系列(每个季度的开始日期和结束日期)[八百章之第二十二章]
- sql 语句系列(月份的第一天和最后一天)[八百章之第二十章]
- sql 语句系列(记录时间差)[八百章之第十八章]
- sql 语句系列(字符串之裂开)[八百章之第十三章]
- sql 语句系列(字符串的遍历嵌入删除与统计)[八百章之第十一章]
- sql 语句系列(列举非索引外键)[八百章之第九章]
- sql 语句系列(更新系列)[八百章之第六章]
- sql 语句系列(null 值处理)[八百章之第二章]
- sql 精读(二) 标准 SQL 中的编号函数
- 【SQL开发实战技巧】系列(四十四):Oracle12C常用新特性☞你知道吗Oracle新增了类似Mysql的自增列(Identity Columns)功能
- 【SQL开发实战技巧】系列(三十九):Oracle12C常用新特性☞新增分页查询
- 【SQL开发实战技巧】系列(二十九):数仓报表场景☞简单的树形(分层)查询以及如何确定根节点、分支节点和叶子节点