本周周一、本月最后一天、本年第一天sql

本文介绍了一系列SQL查询语句,用于获取特定日期范围的数据,如上周、本周、下周、本月等。通过这些实用的SQL脚本,可以快速定位到所需的日期区间,方便进行数据筛选和分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 --上周周一

SELECT   DATEADD(wk,   DATEDIFF(wk,0,getdate()),-7)

--上周周天

SELECT   DATEADD(wk,   DATEDIFF(wk,0,getdate()),-1)

--.本周周一 

SELECT   DATEADD(wk,   DATEDIFF(wk,0,getdate()),0) 

--.本周周天  

select   dateadd(wk,datediff(wk,0,getdate()),6)

--下周周一

select   dateadd(wk,datediff(wk,0,getdate()),7)

--下周周天

select   dateadd(wk,datediff(wk,0,getdate()),13)

--1.本月第一天   

SELECT   DATEADD(mm,   DATEDIFF(mm,0,getdate()),   0)   

  

--9.本月最后一天   

SELECT   dateadd(ms,-3,DATEADD(mm,   DATEDIFF(m,0,getdate())+1,   0))      

--2.本周星期一   

SELECT   DATEADD(wk,   DATEDIFF(wk,0,getdate()),   0)  

 

--3.本周星期天    

select   dateadd(wk,datediff(wk,0,getdate()),6)  

 

--4.本年第一天   

SELECT   DATEADD(yy,   DATEDIFF(yy,0,getdate()),   0)   

 

--10.本年最后一天   

SELECT   dateadd(ms,-3,DATEADD(yy,   DATEDIFF(yy,0,getdate())+1,   0))     

--5.本季度第一天   

SELECT   DATEADD(qq,   DATEDIFF(qq,0,getdate()),   0)   

     

--6.当天的半夜   

SELECT   DATEADD(dd,   DATEDIFF(dd,0,getdate()),   0)   

     

--7.上个月的最后一天   

SELECT   dateadd(ms,-3,DATEADD(mm,   DATEDIFF(mm,0,getdate()),   0))   

     

--8.去年的最后一天   

SELECT   dateadd(ms,-3,DATEADD(yy,   DATEDIFF(yy,0,getdate()),   0))   

     

 

--11.本月的第一个星期一   

select   DATEADD(wk,   

DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),   0)

你可以使用 MySQL 的内置函数 `DATE_FORMAT()` `NOW()` 来获取本周第一天本月第一天本年第一天的值。 查询本周第一天SQL 语句如下: ``` SELECT DATE_FORMAT(NOW() - INTERVAL WEEKDAY(NOW()) DAY ,'%Y-%m-%d'); ``` 查询本月第一天SQL 语句如下: ``` SELECT DATE_FORMAT(NOW() ,'%Y-%m-01'); ``` 查询本年第一天SQL 语句如下: ``` SELECT DATE_FORMAT(NOW() ,'%Y-01-01'); ``` 在 MyBatis 的映射文件 `TrendMapper.xml` 中,你需要添加三个参数,分别对应本周第一天本月第一天本年第一天的值。然后在 SQL 语句中使用这三个参数来替换原来的日期值。 修改后的 SQL 语句如下: ``` SELECT DATE_FORMAT(statistics_date, '%Y-%m-%d') as statisticsDate, COUNT(*) as lotteryWinCount FROM t_lottery_statistics_prize WHERE statistics_date BETWEEN #{weekBegin} AND NOW() AND statistics_date >= #{monthBegin} AND statistics_date >= #{yearBegin} GROUP BY DATE_FORMAT(statistics_date, '%Y-%m-%d') ORDER BY DATE_FORMAT(statistics_date, '%Y-%m-%d') DESC ``` 其中,`#{weekBegin}`、`#{monthBegin}` `#{yearBegin}` 分别对应本周第一天本月第一天本年第一天的参数。 在 Java 代码中,你需要定义这三个参数的值,并将它们传递给 MyBatis 的 SQL 语句。 示例代码如下: ```java public List<Trend> selectTrend() { Date weekBegin = ... // 计算本周第一天的值 Date monthBegin = ... // 计算本月第一天的值 Date yearBegin = ... // 计算本年第一天的值 Map<String, Object> paramMap = new HashMap<>(); paramMap.put("weekBegin", weekBegin); paramMap.put("monthBegin", monthBegin); paramMap.put("yearBegin", yearBegin); return sqlSession.selectList("com.yuxiang.dtsociety.lottery.dao.TrendDao.selectTrend", paramMap); } ``` 其中,`weekBegin`、`monthBegin` `yearBegin` 参数是新增的。在 `paramMap` 中,将这三个参数都传递给 MyBatis 的 SQL 语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值