文档章节

纯SQL获取当月所有日期(不借助任何表)

Vinku
 Vinku
发布于 03/15 14:22
字数 568
阅读 14
收藏 0

之前有个需求需要获取当月的所有需求,搜了一下实现SQL,很多都是借助其他表实现的:

https://blog.csdn.net/zhaofanjack/article/details/80231597

然后我想不用借助任何表实现这个功能,就想出如下杰作:

SELECT DATE(DATE_ADD(NOW(), INTERVAL tb.monthOfday - DAY(NOW()) DAY)) as monthOfDate FROM (
	SELECT 1 as monthOfday UNION ALL
	SELECT 2 as monthOfday UNION ALL
	SELECT 3 as monthOfday UNION ALL
	SELECT 4 as monthOfday UNION ALL
	SELECT 5 as monthOfday UNION ALL
	SELECT 6 as monthOfday UNION ALL
	SELECT 7 as monthOfday UNION ALL
	SELECT 8 as monthOfday UNION ALL
	SELECT 9 as monthOfday UNION ALL
	SELECT 10 as monthOfday UNION ALL
	SELECT 11 as monthOfday UNION ALL
	SELECT 12 as monthOfday UNION ALL
	SELECT 13 as monthOfday UNION ALL
	SELECT 14 as monthOfday UNION ALL
	SELECT 15 as monthOfday UNION ALL
	SELECT 16 as monthOfday UNION ALL
	SELECT 17 as monthOfday UNION ALL
	SELECT 18 as monthOfday UNION ALL
	SELECT 19 as monthOfday UNION ALL
	SELECT 20 as monthOfday UNION ALL
	SELECT 21 as monthOfday UNION ALL
	SELECT 22 as monthOfday UNION ALL
	SELECT 23 as monthOfday UNION ALL
	SELECT 24 as monthOfday UNION ALL
	SELECT 25 as monthOfday UNION ALL
	SELECT 26 as monthOfday UNION ALL
	SELECT 27 as monthOfday UNION ALL
	SELECT 28 as monthOfday UNION ALL
	SELECT 29 as monthOfday UNION ALL
	SELECT 30 as monthOfday UNION ALL
	SELECT 31 as monthOfday
)tb
WHERE MONTH(DATE_ADD(NOW(), INTERVAL tb.monthOfday - DAY(NOW()) DAY)) = MONTH(NOW())

这段SQL看起来是有点蠢,但很实用~~~摊手~~~

原理就是取一个月中最多的天数(31天),通过UNION ALL 组成一个临时表,然后通过月中日期号减去当前日期计算日期(DATE(DATE_ADD(NOW(), INTERVAL tb.monthOfday - DAY(NOW()) DAY))),然后过滤当月的防止溢出(MONTH(DATE_ADD(NOW(), INTERVAL tb.monthOfday - DAY(NOW()) DAY)) = MONTH(NOW()))

还能实现其他功能,例如当月剩余日期

SELECT DATE(DATE_ADD(NOW(), INTERVAL tb.monthOfday - DAY(NOW()) DAY)) as monthOfDate FROM (
	SELECT 1 as monthOfday UNION ALL
	SELECT 2 as monthOfday UNION ALL
    ...
	SELECT 31 as monthOfday
)tb
WHERE DAY(DATE_ADD(NOW(), INTERVAL tb.monthOfday - DAY(NOW()) DAY)) >= DAY(NOW())

用途还能很广泛,例如当月剩余天数、未来N天的日期什么的都不在话下~~SQL我就不写了

若是哪位大牛有更好的实现或者优化还请多多指点......小弟在此谢过!!!

© 著作权归作者所有

Vinku
粉丝 0
博文 13
码字总数 1901
作品 0
东莞
私信 提问
常用sql(不断更新)

1.两张表中数据转移 描述: 有两张表t1,t2,其中两张表中有相同字段,将表t1中符合条件的记录复制到(插入到)t2中 sql示例: 其中,course,codeInfo结构如下: insert into select语句 语句形式...

我是小个子啊
2016/08/17
38
0
PHP+MySQL实现对一段时间内每天数据统计优化操作实例

在互联网项目中,对项目的数据分析必不可少。通常会统计某一段时间内每天数据总计变化趋势调整营销策略。下面来看以下案例。 案例 在电商平台中通常会有订单表,记录所有订单信息。现在我们需...

这真的是一个帅气的名字
2018/07/16
0
0
基于文件系统实现可追加的数据集市

一 问题背景 绝大多数的应用系统中,一开始数据的存储和计算基本都是由数据库来完成的,同时服务于业务交易和报表查询;不过在经过几年信息化建设和数据积累后,常常都会遇到数据库压力变大,...

润乾软件
2018/10/23
0
0
用 Quartz 进行作业调度

Quartz API 采用多面方式在 Java 应用程序中进行任务调度 简介: Quartz 是个开放源码项目,提供了丰富的作业调度集。在这篇文章中,软件工程师 Michael Lipton 和 IT 架构师 Soobaek Jang 对...

石头哥哥
2013/02/21
0
0
Chloe.ORM 2.0 发布,增加默认主键机制

Chloe.ORM:一款轻量、高效的.Net C#数据库访问框架(ORM)。实体为纯POCO,支持基本数据类映射的同时也支持枚举类型。查询接口借鉴linq(但不支持linq),支持lambda表达式,高效便捷开发。借助...

so_while
2016/08/27
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

Oracle:本地表空间管理,字典表空间管理

本地管理表空间 一、概述 1、理解本地管理表空间的由来 2、理解什么是字典管理表空间及工作原理 3、理解本地管理表空间的优势(为什么要使用本地管理表空间) 4、理解本地管理表空间的内部结...

突突突酱
20分钟前
1
0
深度剖析Spring Boot源码,看完薪资敢要30K!

1 实例化SpringApplication SpringApplication.run(BootifulApplication.class, args); public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) {ret......

Java架构资源分享
24分钟前
4
0
tornadofx控制台输出“三门问题”,蒙特卡洛算法

import tornadofx.*fun main() { val wins = intProperty() val lose = intProperty() val Msg = stringProperty()// 1000万次 val n = 10000000 (1..n......

oschina4cyy
30分钟前
1
0
你可能不知道的MySQL中的定点数类型

定点数类型 正因为用浮点数表示小数可能会有不精确的情况,在一些情况下我们必须保证小数是精确的,所以设计MySQL的大叔们提出一种称之为定点数的数据类型,它也是存储小数的一种方式: 其中...

爱编程的浪子
32分钟前
2
0
第十讲:Python爬取网页图片并保存到本地,包含次层页面

上一讲我们讲到了从昵图网的首页下载图片到本地,但是我们发现首页上面的大部分链接其实都可以进入到二级页面。 在二级页面里面,我们也可以同样进行图片的下载,通过层层循环我们可以把网址...

刘日辉
39分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部