sql本月最后一天
① sql分析查询,并依据单据日期计算当月最后一天
select 订单,日期,dateadd(DAY,-1,convert(datetime,cast(year(日期) as varchar(10)) + '-' + cast(MONTH(日期)+1 as varchar(10))+'-'+'1',20)) as 月底日期,产品,数量,金额
from ordertable
核心思想:
1.根据日期字段取出年月
2.根据当前年月计算出下一个月1号的时间
3.将下个月1号-1就得出当前月的最后1天
② SQL如何获得本季度第一天,一年的第一天,本月的最后一天
你好,以下是获取年,季度,天日期的所有方式:
DECLARE @dt datetime
SET @dt=GETDATE()
DECLARE @number int
SET @number=3
--1.指定日期该年的第一天或最后一天
--A. 年的第一天
SELECT CONVERT(char(5),@dt,120)+'1-1'
--B. 年的最后一天
SELECT CONVERT(char(5),@dt,120)+'12-31'
--2.指定日期所在季度的第一天或最后一天
--A. 季度的第一天
SELECT CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt)-2,
@dt),
120)+'1')
--B. 季度的最后一天(CASE判断法)
SELECT CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)
+CASE WHEN DATEPART(Quarter,@dt) in(1,4)
THEN '31'ELSE '30' END)
--C. 季度的最后一天(直接推算法)
SELECT DATEADD(Day,-1,
CONVERT(char(8),
DATEADD(Month,
1+DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)+'1')
--3.指定日期所在月份的第一天或最后一天
--A. 月的第一天
SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')
--B. 月的最后一天
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')
--C. 月的最后一天(容易使用的错误方法)
SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))
--4.指定日期所在周的任意一天
SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)
--5.指定日期所在周的任意星期几
--A. 星期天做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)
--B. 星期一做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)
③ 用SQL取每个月的最后一天,怎么写
DateSerial(Year(GetDate()), Month(GetDate())+1, 0)
仅限于SQL Server 数据库,
非SQL Server 数据库请参考数据库系统函数。
④ SQL语句 如何取得指定月份的最后一天的日期
你好,以下是获取年,季度,天日期的所有方式:DECLARE
@dt
datetime
SET
@dt=GETDATE()
DECLARE
@number
int
SET
@number=3
--1.指定日期该年的第一天或最后一天
--A.
年的第一天
SELECT
CONVERT(char(5),@dt,120)+'1-1'
--B.
年的最后一天
SELECT
CONVERT(char(5),@dt,120)+'12-31'
--2.指定日期所在季度的第一天或最后一天
--A.
季度的第一天
SELECT
CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt)-2,
@dt),
120)+'1')
--B.
季度的最后一天(CASE判断法)
SELECT
CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)
+CASE
WHEN
DATEPART(Quarter,@dt)
in(1,4)
THEN
'31'ELSE
'30'
END)
--C.
季度的最后一天(直接推算法)
SELECT
DATEADD(Day,-1,
CONVERT(char(8),
DATEADD(Month,
1+DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)+'1')
--3.指定日期所在月份的第一天或最后一天
--A.
月的第一天
SELECT
CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')
--B.
月的最后一天
SELECT
DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')
--C.
月的最后一天(容易使用的错误方法)
SELECT
DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))
--4.指定日期所在周的任意一天
SELECT
DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)
--5.指定日期所在周的任意星期几
--A.
星期天做为一周的第1天
SELECT
DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)
--B.
星期一做为一周的第1天
SELECT
DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)
⑤ sql 语句 怎么获取指定月的第一天和最后一天
first_day()得到一个月中的第一天:如first_day(to_date('2008-5-22','yyyy-mm-dd')) 结果:2008-5-1
last_day()得到一个月最后的一天:如:last_day(to_date('2008-5-22','yyyy-mm-dd')) 结果:2008-5-31 ;
⑥ sql如何把当月的最后一天转化成23:59:59
摘要 方法一:set @EndDate = dateadd(month, datediff(month, -1, @StoredDate), -1)
⑦ sql如何取某年某月的第一天和最后一天
SELECT CAST((LEFT('20093',4)+'-'+SUBSTRING('20093',5,LEN('20093'))+'-'+'01') AS DATETIME)--第一天
SELECT DATEADD(DAY,-1,DATEADD(MONTH,1,CAST((LEFT('20093',4)+'-'+SUBSTRING('20093',5,LEN('20093'))+'-'+'01') AS DATETIME)))--最后一天
原理:第一天肯定是1号拉,最后一天是下个月第一天减一天。
本月第一天
SELECT dateadd(ms,-1,DATEADD(mm, DATEDIFF(m,0,getdate()), 0)) as mouthlastdate
下月第一天:
SELECT dateadd(ms,-1,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) as mouthlastdate
下下月第一天:
SELECT dateadd(ms,-1,DATEADD(mm, DATEDIFF(m,0,getdate())+2, 0)) as mouthlastdate
(7)sql本月最后一天扩展阅读
sqlserver 时间格式函数详细
--getdate 获取当前时间
select getdate()
--dateadd 原有时间加: 2013-02-17 13:20:16 此时间加12个月
select dateadd(MONTH,12,'2013-02-17 13:20:16') --返回:2014-02-17 13:20:16.000 (参数month可以改为 day,year等日期加相应的值)
--datediff 两个时间的差 (后面-前面=返回值)
select datediff(day,'2013-02-01','2013-02-18') --返回:17 (参数day可以改为 month,year等日期加相应的值)
--datepart 获取日期的某个部分整数
select DATEPART(month, '2013-2-17') --返回 2 (参数month可以改为 day,year等日期加相应的值)
--datename 获取指定部位的字符串
select datename(weekday, '2013-2-17') --返回 星期日 (参数weekday可以改为 day,year等日期加相应的值)
--day(), month(),year() 获取指定部位的字符串
select day('2013-2-15') --返回15
⑧ 用SQL取每个月的最后一天,怎么写
Oracle : select last_day(sysdate) from al ;
Mysql : SELECT LAST_DAY('2003-02-05');