当前位置:首页 » 编程语言 » sql查询某个月最后一天
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql查询某个月最后一天

发布时间: 2023-02-04 17:13:39

A. 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

(1)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

B. sql查询某年各个月最后一天的记录

我写了下面的语句供你参考,涉及到的内容:1、cast() 数据类型转换2、转义字符 (''),两个单引号代表一个单引号3、while 循环4、union all 查询连接 declare @day int
declare @month int
declare @year int
declare @date_string varchar(20)declare @checktime_start datetime
declare @checktime_end datetimedeclare @sql varchar(2048)set @year = 2009
set @month = 2
set @sql = ''

while(@month<=12)
begin
select @date_string = cast(@year as varchar)+'-'+cast(@month as varchar)+'-'+'01'
set @date_string = cast(@date_string AS DATETIME)
set @checktime_end = dateadd(day,-1,@date_string)
set @checktime_start = dateadd(day,-2,@date_string) --在这个地方写你要查询的内容[table]是你的表,[date]是时间列,还有别的条件你自己加

set @sql = @sql + 'select * from [table] where [date] between '''+cast(@checktime_start AS varchar(16))+''' and '''+ cast(@checktime_end AS varchar(16))+ ''' union all '
set @month = @month +1
end

set @sql = @sql + 'select * from [table] where [date] between ''12 30 2009 12:00AM'' and ''12 31 2009 12:00AM'''
--print(@sql)
exec @sql
这个是按你要求只查询2009年的记录,假如你要查2005到2009,你在while循环外面再加个对年的循环。

C. 获取本月、本季、本年第一天和最后一天等等sql(sql server)

转自: http://blog.itpub.net/183473/viewspace-723253

--DATEDIFF ( datepart , startdate , enddate )

--DATEDIFF函数计算两个日期之间的小时、天、周、月、年等时间间隔总数

--DATEADD ( datepart , number, date )

--DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期

--计算一个月第一天

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

--本周的星期一,这里我是用周(wk)的时间间隔来计算哪一天是本周的星期一。

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

--一年的第一天,现在用年(yy)的时间间隔来显示这一年的第一天。

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

--季度的第一天,假如你要计算这个季度的第一天,这个例子告诉你该如何做。

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

--上个月的最后一天,这是一个计算上个月最后一天的例子。它通过从一个月的最后一天这个例子上减去3毫秒来获得。有一点要记住,在Sql  Server中时间是精确到3毫秒。这就是为什么我需要减去3毫秒来获得我要的日期和时间。

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

--去年的最后一天,连接上面的例子,为了要得到去年的最后一天,你需要在今年的第一天上减去3毫秒。

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

--本月的最后一天,现在,为了获得本月的最后一天,我需要稍微修改一下获得上个月的最后一天的语句。修改需要给用DATEDIFF比较当前日期和“1900-01-01”返回的时间间隔上加1。通过加1个月,我计算出下个月的第一天,然后减去3毫秒,这样就计算出了这个月的最后一天。这是计算本月最后一天的SQL脚本

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

--本年的最后一天,你现在应该掌握这个的做法,这是计算本年最后一天脚本

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

--本月的第一个星期一,好了,现在是最后一个例子。这里我要计算这个月的第一个星期一。这是计算的脚本。

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

--a. 本月的第一天

select dateadd(mm, datediff(mm,0,getdate()), 0) AS 本月的第一天

--b. 本月的最后一天

select dateadd(ms,-3,dateadd(mm, datediff(mm,0,getdate())+1, 0)) AS 本月的最后一天

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

select dateadd(ms,-3,dateadd(mm, datediff(mm,0,getdate()), 0)) AS 上个月的最后一天

--d. 本周的星期一

select dateadd(wk, datediff(wk,0,getdate()), 0) AS 本周的星期一

--e. 本季度的第一天

select dateadd(qq, datediff(qq,0,getdate()), 0) AS 本季度的第一天

--f. 本季度的最后一天

select DATEADD(ms,-3,dateadd(qq, datediff(qq,0,getdate())+1, 0)) AS 本季度的最后一天

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

select dateadd(wk, datediff(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0) AS 本月的第一个星期一

--h. 本年的第一天

select dateadd(yy, datediff(yy,0,getdate()), 0) AS 本年的第一天

--i. 本年的最后一天

select dateadd(ms,-3,dateadd(yy, datediff(yy,0,getdate())+1, 0)) AS 本年的最后一天

--f. 去年的最后一天

select dateadd(ms,-3,dateadd(yy, datediff(yy,0,getdate()), 0)) AS 去年的最后一天

D. sql 如何获取月份的最后一天

DECLARE@dtdatetime
SET@dt=GETDATE()

DECLARE@numberint
SET@number=3

--1.指定日期该年的第一天或最后一天
--A. 年的第一天
SELECTCONVERT(char(5),@dt,120)+'1-1'

--B. 年的最后一天
SELECTCONVERT(char(5),@dt,120)+'12-31'

--2.指定日期所在季度的第一天或最后一天
--A. 季度的第一天
SELECTCONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt)-2,
@dt),
120)+'1')

--B. 季度的最后一天(CASE判断法)
SELECTCONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)
+CASEWHENDATEPART(Quarter,@dt) in(1,4)
THEN'31'ELSE'30'END)

--C. 季度的最后一天(直接推算法)
SELECTDATEADD(Day,-1,
CONVERT(char(8),
DATEADD(Month,
1+DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)+'1')

--3.指定日期所在月份的第一天或最后一天
--A. 月的第一天
SELECTCONVERT(datetime,CONVERT(char(8),@dt,120)+'1')

--B. 月的最后一天
SELECTDATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')

--C. 月的最后一天(容易使用的错误方法)
SELECTDATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))

--4.指定日期所在周的任意一天
SELECTDATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)

--5.指定日期所在周的任意星期几
--A. 星期天做为一周的第1天
SELECTDATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)

--B. 星期一做为一周的第1天
SELECTDATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)

E. Sql 语句咋么把每月最后一天Select 出来

select * from 表111 A
WHERE NOT EXISTS ( SELECT 1 FROM 表111 B WHERE A.MONTH(交易日期) = B.(交易日期) AND B.DAY(交易日期) > A.DAY(交易日期))
这个可以筛选出表中每个月最后一天的,也就是说,比如2011年5月,表中最大的日期到5月28日,那么这个会把这天的数据选出来,而不是空(因为实际的最后一天为空)。

我没有ACCESS环境,您试试这个语法。

F. 用SQL取每个月的最后一天,怎么写

Oracle : select last_day(sysdate) from al ;
Mysql : SELECT LAST_DAY('2003-02-05');

G. 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 ;

H. sql取每个月最后一天数据插入到别的表

sql取每个月最后一天数据插入到别的表步骤如下:2、将MyStudentInfo表的所有字段数据插入不存在的表
SELECT * INTO studentinfo_test1 FROM MyStudentInfo
2、将MyStudentInfo表的个别字段数据插入不存在的表
SELECT Id,Name INTO MytestInfo FROM myStudentInfo
3、带有where子句
SELECT Id,Name,Gender INTO MytestInfo 。希望可以帮到你。