如何获得MySQL中第一季度的第一个日期?

ric*_*hie 8 mysql date

我到目前为止的代码如下:我正在试图找出代替我的代码来查找日期所在季度的开始日期.

SELECT
 QUARTER(r.callDate) AS quar,
 YEAR(r.callDate) AS ryear,
 ???????? AS scoreDateStart,
 (SELECT DATE (DATE_SUB( DATE_ADD( CONCAT( YEAR( r.callDate ), '-01-01'), INTERVAL QUARTER(r.callDate) QUARTER ), INTERVAL 1 DAY))) AS scoreDateEnd,
 group_concat(DISTINCT(r.resultId) separator ', ') AS resultIds
FROM results AS r
GROUP BY  quar, ryear
ORDER BY quar;
Run Code Online (Sandbox Code Playgroud)

我试过谷歌但无济于事.

输出的一个例子是:

'1', '2012', '2012-01-01', '2012-03-31', '57, 58, 59'
'2', '2012', '2012-04-01', '2012-06-30', '10549, 10551, 12598'
Run Code Online (Sandbox Code Playgroud)

Joe*_*eph 20

试试这个:

要获取当前季度的开始日期,请使用以下命令:

  SELECT  MAKEDATE(YEAR(CURDATE()), 1) + INTERVAL QUARTER(CURDATE()) QUARTER 
                                       - INTERVAL    1 QUARTER 
Run Code Online (Sandbox Code Playgroud)

所以你的查询将是:

SELECT
 QUARTER(r.callDate) AS quar,
 YEAR(r.callDate) AS ryear,
 MAKEDATE(YEAR(r.callDate), 1) + INTERVAL QUARTER(r.callDate) QUARTER -
  INTERVAL 1 QUARTER  AS scoreDateStart,
 (SELECT DATE (DATE_SUB( DATE_ADD( CONCAT( YEAR( r.callDate ), '-01-01'), 
 INTERVAL QUARTER(r.callDate) QUARTER ), INTERVAL 1 DAY))) AS scoreDateEnd,
 group_concat(DISTINCT(r.resultId) separator ', ') AS resultIds
FROM results AS r
GROUP BY  quar, ryear
ORDER BY quar;
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要当前季度的最后一天,请减去“ INTERVAL 1 DAY”而不是“ INTERVAL 1 QUARTER”。 (3认同)