SQL 获取时、日、周、月日期

因工作上常用到统计分析,需要用到具体的时间,故写于此

24小时:

 SELECT 0 AS hour UNION ALL SELECT 1 AS hour UNION ALL
SELECT 2 AS hour UNION ALL SELECT 3 AS hour UNION ALL
SELECT 4 AS hour UNION ALL SELECT 5 AS hour UNION ALL
SELECT 6 AS hour UNION ALL SELECT 7 AS hour UNION ALL
SELECT 8 AS hour UNION ALL SELECT 9 AS hour UNION ALL
SELECT 10 AS hour UNION ALL SELECT 11 AS hour UNION ALL
SELECT 12 AS hour UNION ALL SELECT 13 AS hour UNION ALL
SELECT 14 AS hour UNION ALL SELECT 15 AS hour UNION ALL
SELECT 16 AS hour UNION ALL SELECT 17 AS hour UNION ALL
SELECT 18 AS hour UNION ALL SELECT 19 AS hour UNION ALL
SELECT 20 AS hour UNION ALL SELECT 21 AS hour UNION ALL
SELECT 22 AS hour UNION ALL SELECT 23 AS hour

当天、前一天,前一周日期:

//当天:
SELECT DATE_SUB(CURDATE(),INTERVAL 0 DAY); //前一天:
SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY); //前一周(从今天开始往前推七天)
select DATE_ADD(curdate(),INTERVAL -0 DAY) day union
select DATE_ADD(curdate(),INTERVAL -1 DAY) day1 union
select DATE_ADD(curdate(),INTERVAL -2 DAY) day2 union
select DATE_ADD(curdate(),INTERVAL -3 DAY) day3 union
select DATE_ADD(curdate(),INTERVAL -4 DAY) day4 union
select DATE_ADD(curdate(),INTERVAL -5 DAY) day5 union
select DATE_ADD(curdate(),INTERVAL -6 DAY) day6 ; //后七天(从今天开始往后推七天)
select DATE_SUB(curdate(),INTERVAL -1 DAY) day1 union
select DATE_SUB(curdate(),INTERVAL -2 DAY) day2 union
select DATE_SUB(curdate(),INTERVAL -3 DAY) day3 union
select DATE_SUB(curdate(),INTERVAL -4 DAY) day4 union
select DATE_SUB(curdate(),INTERVAL -5 DAY) day5 union
select DATE_SUB(curdate(),INTERVAL -6 DAY) day6 union
select DATE_SUB(curdate(),INTERVAL -7 DAY) day7;

本周:

<!--本周第一天:(周一开始)-->
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY);
<!--本周最后一天:(周日结束)-->
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 5 DAY); <!--本周第一天:(周日开始)-->
select subdate(curdate(),date_format(curdate(),'%w'));
<!--本周最后一天:(周六结束)-->
select subdate(curdate(),date_format(curdate(),'%w') - 6);

近一、三个月日期:

<!--近一个月-->
SELECT ADDDATE(y.first, x.d - 1) as day
FROM
(SELECT 1 AS d UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL
SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL
SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL
SELECT 29 UNION ALL SELECT 30 UNION ALL SELECT 31) x,
(SELECT CONCAT('2022-09','-01') as FIRST, DAY(LAST_DAY(str_to_date('2022-09','%Y-%m-%d'))) AS last) y
WHERE x.d <= y.last <!--近三个月(使用union all链接)-->
SELECT ADDDATE(y.first, x.d - 1) as day
FROM
(SELECT 1 AS d UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL
SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL
SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL
SELECT 29 UNION ALL SELECT 30 UNION ALL SELECT 31) x,
(SELECT CONCAT('2022-09','-01') as FIRST, DAY(LAST_DAY(str_to_date('2022-09','%Y-%m-%d'))) AS last) y
WHERE x.d <= y.last union all SELECT ADDDATE(y.first, x.d - 1) as day
FROM
(SELECT 1 AS d UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL
SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL
SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL
SELECT 29 UNION ALL SELECT 30 UNION ALL SELECT 31) x,
(SELECT CONCAT('2022-09','-01') as FIRST, DAY(LAST_DAY(str_to_date('2022-09','%Y-%m-%d'))) AS last) y
WHERE x.d <= y.last union all SELECT ADDDATE(y.first, x.d - 1) as day
FROM
(SELECT 1 AS d UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL
SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL
SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL
SELECT 29 UNION ALL SELECT 30 UNION ALL SELECT 31) x,
(SELECT CONCAT('2022-09','-01') as FIRST, DAY(LAST_DAY(str_to_date('2022-09','%Y-%m-%d'))) AS last) y
WHERE x.d <= y.last

Java获取当前的年月日时间

        Calendar cal=Calendar.getInstance();
// 当前年
int year = cal.get(Calendar.YEAR);
// 当前月
int month = cal.get(Calendar.MONTH) + 1;
// 当前日
int day = cal.get(Calendar.DATE);
// 当前小时
int hour = cal.get(Calendar.HOUR_OF_DAY);
// 当前分钟
int minute = cal.get(Calendar.MINUTE);
// 当前秒
int second = cal.get(Calendar.SECOND);
// 当前是本周第几天
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
// 当前是本月第几天
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
// 当前是本年第几天
int dayOfYear = cal.get(Calendar.DAY_OF_YEAR); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
// 当月第一天
cal= Calendar.getInstance();
cal.add(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 1);
String firstday = format.format(cal.getTime()); // 当月最后一天
cal= Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
cal.set(Calendar.DAY_OF_MONTH, 0);
String lastday = format.format(cal.getTime());

获取某个区间内时间(从昨天开始往前推七天为例):


/**
* 根据当前日期获取前一天的日期
*/
public static String yesterday() {
//获取今天的日期
LocalDate localDate = LocalDate.now();
//前一天日期是今天减1
LocalDate yesterday = localDate.plusDays(-1);
return yesterday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}
/**
* 获取七天前的日期
*/
private static String getWeekAgo() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, -7);
Date date = calendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String sevenDaysAgo = sdf.format(date);
return sevenDaysAgo;
}
   SELECT DATE_FORMAT( a.DAY, '%m-%d' ) AS DATE
from (
select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY as day
from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as d
) a
WHERE a.DAY BETWEEN "2023-08-10" AND "2023-08-15"
<!--将上面时间替换掉即可--> <!--开发中发现上面这种存在日期显示问题,故更换下面这种-->
SELECT ADDDATE(#{startTime}, INTERVAL @i:=@i+1 DAY) AS DAY
FROM (
SELECT a.a FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
) a
JOIN (SELECT @i := -1) r
WHERE @i &lt; DATEDIFF(#{endTime},#{startTime})) d

java获取时间来自CSDN博主文章,文下附上链接:

https://blog.csdn.net/web18536564348/article/details/126403332

java获取年月日、时间与区间、Sql获取年月日区间的更多相关文章

  1. delphi 获取北京时间(使用XMLHTTP获取百度的时间,WebBrowser获取www.timedate.cn的时间)

    方法一: uses ComObj, DateUtils; function GetInternetTime: string; var XmlHttp: OleVariant; datetxt: str ...

  2. (转)golang获取当前时间、时间戳和时间字符串及它们之间的相互转换

    原文连接: https://blog.csdn.net/skh2015java/article/details/70051512 1.获取当前时间 currentTime:=time.Now() // ...

  3. Python获取当前时间_获取格式化时间_格式化日期

    Python获取当前时间_获取格式化时间: Python获取当前时间: 使用 time.time( ) 获取到距离1970年1月1日的秒数(浮点数),然后传递给 localtime 获取当前时间 #使 ...

  4. JAVA中的时间操作

    java中的时间操作不外乎这四种情况: 1.获取当前时间 2.获取某个时间的某种格式 3.设置时间 4.时间的运算 好,下面就针对这四种情况,一个一个搞定. 一.获取当前时间 有两种方式可以获得,第一 ...

  5. sql获取时间、年龄

      mysql数据库获取年龄:TIMESTAMPDIFF(YEAR, [出生日期字段], CURDATE()) select * from (select name 姓名,TIMESTAMPDIFF( ...

  6. java获取当前日期时间代码总结

    1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值.  方法如下: 要使用 java.util.Date .获取当前时间的代码如下  代码如下 复制代码 Date date = new ...

  7. 按照相应的格式获取系统时间并将其转化为SQL中匹配的(date)时间格式

    在获取时间时需要对时间格式进行设置,此时就需要用到SimpleDateFormat 类 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM ...

  8. Java基础进阶:时间类要点摘要,时间Date类实现格式化与解析源码实现详解,LocalDateTime时间类格式化与解析源码实现详解,Period,Duration获取时间间隔与源码实现,程序异常解析与处理方式

    要点摘要 课堂笔记 日期相关 JDK7 日期类-Date 概述 表示一个时间点对象,这个时间点是以1970年1月1日为参考点; 作用 可以通过该类的对象,表示一个时间,并面向对象操作时间; 构造方法 ...

  9. java学习第13天( java获取当前时间,有关大数据的运算及精确数字运算,Date类)

    一 java获取当前时间 学习一个函数,得到当前时间的准确值 System.currectTimeMillis(). 可以得到以毫秒为单位的当前时间.它主要用于计算程序运行时间,long start= ...

  10. Swift3.0 iOS获取当前时间 - 年月日时分秒星期

    Swift3.0 iOS获取当前时间 - 年月日时分秒星期func getTimes() -> [Int] { var timers: [Int] = [] // 返回的数组 let calen ...

随机推荐

  1. Android学习day02【页面布局的练习】

    在网上找了一些图片,只用最简单的颜色进行区分,目的是熟悉线性布局和相对布局 下面是我找到的简单的Android页面,你也可以尝试以下' 下面是我的实现代码 第一个

  2. 2018CCPC桂林 A(贪心,思维)

    题目 分析:首先发现将大的数放在小的数前面结果更优,于是想到通过比较元素大小的方式将两个数组合并,大的放前面小的放后面,但很容易就能想到比这样合并更优的方案.一开始我是想先按这种方式进行合并,然后将最 ...

  3. Pipeline模式应用

    本文记录Pipeline设计模式在业务流程编排中的应用 前言 Pipeline模式意为管道模式,又称为流水线模式.旨在通过预先设定好的一系列阶段来处理输入的数据,每个阶段的输出即是下一阶段的输入. 本 ...

  4. [ABC238G] Cubic?

    Problem Statement Given a sequence $A$ of $N$ numbers, answer the following $Q$ questions. In the $i ...

  5. Gradle导致Lombok不生效问题

    现象 从debug看是可以查询到数据的,但是返回起前端是没有数据的 解决办法 // 引入lombok注解处理器 annotationProcessor,不然lombok不会生效 annotationP ...

  6. Mybatis-Flex核心功能之@Table

    1.能干啥? @Table 主要是用于给 Entity 实体类添加标识,用于描述 实体类 和 数据库表 的关系,以及对实体类进行的一些 功能辅助. 例如: 数据库有一张tb_member的会员表 这时 ...

  7. LLM增强LLM;通过预测上下文来提高文生图质量;Spikformer V2;同时执行刚性和非刚性编辑的通用图像编辑框架

    文章首发于公众号:机器感知 LLM增强LLM:通过预测上下文来提高文生图质量:Spikformer V2:同时执行刚性和非刚性编辑的通用图像编辑框架 LLM Augmented LLMs: Expan ...

  8. linux内核initcall放置在各个section中函数执行流程

    前言 linux以及嵌入式一些代码,我们看到core_initcall.device_initcall等等需要链接器分配各个section,并且在启动该模块时候执行.下面我们详细追溯一下执行过程. 作 ...

  9. 机器学习周刊03:如何学习深度学习?2024 年学习生成式 AI 路线图、如何构建高效的RAG系统、苹果 腾讯最新论文、阿里DreaMoving

    腾讯推出的 AppAgent,是一个多模态智能体,通过识别当前手机的界面和用户指令直接操作手机界面,能像真实用户一样操作手机! 机器学习周刊:关注Python.机器学习.深度学习.大模型等硬核技术 1 ...

  10. 如何用axios加后端数据库传值给前端

    小杰笔记: 如何用axios : 第一步:编写数据库实体类 @Data @AllArgsConstructor @NoArgsConstructor public class User { priva ...