sql 语句系列(计算一个季度的开始日期和结束日期)[八百章之第二十三章]
前言
很多时候,我们进行数据库查询的时候,查询一个季度的财务报表的时候。
比如说查询2020年第一季度的单子,可能传入后台的就是20201,表示的就是20201第一季度,这时候我们要转换为日期。
select * from quarters
mysql
SELECT DATE_ADD(ADDDATE(q_end,-DAY(q_end)+1),INTERVAL -2 MONTH) q_start,q_end
from(
select LAST_DAY(STR_TO_DATE(CONCAT(SUBSTR(args,1,4),MOD(args,10)*3),'%Y%m')) q_end
from quarters
) x
sql server
select DATEADD(m,-2,q_end) q_start,
DATEADD(d,-1,DATEADD(m,1,q_end))q_ebd
from(
select cast(SUBSTRING(cast(args as varchar),1,4)+'-'+CAST(args%10*3 as varchar)+'-1' as datetime) q_end
from quarters
) x
效果: