當前位置:首頁 » 編程語言 » 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 。希望可以幫到你。