2016-06-21 81 views
0

我在我的MySQL數據庫中有一個日期列。從這個日期我如何獲得dayofquarter?從日期獲取DayOfQuarter

從本季度開始直到現在,我一直在做一個datediff,但希望能夠動態地做到這一點。

+0

嘿萌,做我的出奇的真棒答案滿足您的需求? – Ray

回答

2

你必須做一些計算,但它絕對可以在MsSQL中動態完成。我可以使用日期2016年4月30日(2016-04-30)作爲例子:

首先,這裏是你如何動態地獲得一個季度的第一天:

SELECT makedate(YEAR("2016-04-30"), 1) + INTERVAL QUARTER("2016-04-30") QUARTER - INTERVAL 1 QUARTER 

一旦你有了這個,減它從原來的日期,以獲得四分之一的一天的日期和把它加1(或第一天是第0天)

SELECT DATEDIFF("2016-04-30",(makedate(YEAR ("2016-04-30"), 1) + INTERVAL QUARTER("2016-04-30") QUARTER - INTERVAL 1 QUARTER)) + 1 AS dayofquarter 

是動態的,隨着日期列替換所有三個2016-04-30日期您正在查詢的表格爲:

SELECT DATEDIFF(`somedatecolumn`,(makedate(YEAR (`somedatecolumn`), 1) + INTERVAL QUARTER(`somedatecolumn`) QUARTER - INTERVAL 1 QUARTER)) + 1 AS dayofquarter FROM `my_table` 

如果你正在尋找一個簡單,時髦,內置樣DAYOFQUARTER(somedate)功能,你的運氣了出來,你需要創建自己的http://dev.mysql.com/doc/refman/5.7/en/create-procedure.html