當前位置:首頁 » 編程語言 » 返回當季最後一天sql函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

返回當季最後一天sql函數

發布時間: 2022-09-03 19:54:20

1. sql 如何取當季最後一個月的第一天

oracle(本季度第一天+兩個月=本季度最後一個月第一天)
SELECT to_char(add_months(TRUNC(SYSDATE, 'Q'), 2), 'YYYY-MM-DD') FROM al;
sqlserver:還是先找到當前季度的第一天然後加兩個月
Select DATEADD(mm,2,DATEADD(qq, DATEDIFF(qq,0,getdate()), 0))

mysql:想不出來,mysql的函數很多都是關於天的,而且太久沒用,差不多都還給書本了。

其實也可以用case when來寫,首先判斷當前時間是第幾季度,然後用case when來寫,等於1就是3.1,等於2就是6.1,以此類推,這個應該不算很麻煩,判斷三次,就可以了。

2. 獲取本月、本季、本年第一天和最後一天等等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 去年的最後一天

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

(3)返回當季最後一天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

4. 寫出取當月最後一天的SQL語句

last_day(date)
這個函數可以返回當月最後一天的日期,date為日期類型!

對了,你用的是什麼資料庫

5. 用SQL獲取某個某年某個月份的最後一天的日期

/*
思路:首先把某日期的月份加一,再把結果的日期減一
*/
DECLARE @Date AS DATETIME
DECLARE @DateChar AS nVarChar(19)
--給日期賦值
SET @Date = GetDate()
--返回你需要的
SET @DateChar = CONVERT(Char(8), @Date, 120) + '01 00:00:00'
SELECT DATEADD(d, -1, DATEADD(m, 1, CAST(@DateChar AS DATETIME)))

6. SQL語句:取某個日期所在季度的最後一天,精確到時分秒

取季度數字然後再CASE WHEN 就好啦﹐參考以下代碼

DECLARE@TBTABLE(TIMEDATETIME)
INSERTINTO@TBVALUES('2013-02-0911:22:59.997')
INSERTINTO@TBVALUES('2013-05-0713:12:51.333')
INSERTINTO@TBVALUES('2013-07-0715:42:22.633')
INSERTINTO@TBVALUES('2013-10-2019:29:22.783')

SELECT*,CASEWHENDATEPART(QQ,TIME)=1THENDATEADD(D,-1,'2013-04-0123:59:59.997')
WHENDATEPART(QQ,TIME)=2THENDATEADD(D,-1,'2013-07-0123:59:59.997')
WHENDATEPART(QQ,TIME)=3THENDATEADD(D,-1,'2013-10-0123:59:59.997')
WHENDATEPART(QQ,TIME)=4THENDATEADD(D,-1,'2014-01-0123:59:59.997')
ENDASQUARTER
FROM@TB

效果:

TIME QUARTER

---------------------------------- - -----------------------------------

2013-02-09 11:22:59.997 2013-03-31 23:59:59.997

2013-05-07 13:12:51.333 2013-06-30 23:59:59.997

2013-07-07 15:42:22.633 2013-09-30 23:59:59.997

2013-10-20 19:29:22.783 2013-12-31 23:59:59.997

7. SQL 返回當前季度的函數的祥細過程

本季度的第一天
SELECT trunc(SYSDATE,'q') FROM DUAL;

第x季度
SELECT to_char(SYSDATE,'q') FROM DUAL;

8. 如果給定一個年月,如:201204,怎麼用SQL函數取該月份的第一天和最後一天,顯示如:20120401

oracle 可以寫個函數
CREATE OR REPLACE FUNCTION SF_GETYMD
(
PI_RQ0000 IN VARCHAR2, --日期
PI_BS0000 IN VARCHAR2 --標示 0,1,2
)
RETURN VARCHAR2
AS
LS_RETURN VARCHAR2(8);
BEGIN
IF PI_RQ0000 IS NULL THEN
LS_RETURN := to_char(sysdate,'yyyymmdd');
elsIF PI_BS0000='0' THEN
LS_RETURN := SUBSTR(PI_RQ0000,1,6)||'01';
ELSIF PI_BS0000='1' THEN
LS_RETURN := TO_CHAR(LAST_DAY(TO_DATE(PI_RQ0000,'YYYY-MM')),'YYYYMMDD');
ELSIF PI_BS0000='2' THEN
LS_RETURN := TO_CHAR(last_day(add_months(TO_DATE(PI_RQ0000,'YYYY-MM'),-1)),'YYYYMMDD');
END IF;
RETURN LS_RETURN;
END SF_GETYMD;

9. 在sql server 中如何獲取當月最後一天

語句如下:

selectconvert(varchar(10),dateadd(d,-1,convert(varchar(7),dateadd(m,1,getdate()),120)+'-01'),120)

執行結果如圖:

延伸閱讀:

SQL Server CONVERT() 函數

定義和用法

CONVERT() 函數是把日期轉換為新數據類型的通用函數。

CONVERT() 函數可以用不同的格式顯示日期/時間數據。

語法

CONVERT(data_type(length),data_to_be_converted,style)

SQL Server DATEADD() 函數

定義和用法

DATEADD() 函數在日期中添加或減去指定的時間間隔。

語法

DATEADD(datepart,number,date)