2016-06-21 98 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