MySQL Получить последнюю дату в каждом месяце из столбца дат - PullRequest
3 голосов
/ 17 февраля 2010

Пример показан ниже; представьте, что каждая дата, разделенная запятыми, является строкой в ​​базе данных

Ввод: - 2010-01-11, 2010-01-18, 2010-01-25, 2010-02-01, 2010-02-08, 2010-02-15, 2010-02-22, 2010- 03-01 должно вернуть

Ouput: 2010-01-25, 2010-02-22, 2010-03-01

Выходные данные получены путем получения последней даты месяца, обратите внимание, что за март в базе данных есть только одна дата, поэтому мы используем это значение.

Буду признателен, если кто-то сможет опубликовать псевдо-SQL о том, как решить эту проблему. Обратите внимание, я использую My-SQL, поэтому эти функции даты доступны.

Приветствия

Ответы [ 3 ]

9 голосов
/ 17 февраля 2010
SELECT MAX(datecol) FROM sometable
GROUP BY YEAR(datecol), MONTH(datecol);

Предложение group by представлено по году и месяцу, поэтому оно будет обрабатывать даты, которые выходят за год.

2 голосов
/ 17 февраля 2010
SELECT max(date_field) FROM date_table GROUP BY YEAR(date_field), MONTH(date_field) ORDER BY date_field ASC;
0 голосов
/ 21 октября 2013
CREATE FUNCTION [dbo].[GetLastDateOfMonthBetweenTwoDates]

(

    @startdate  DATETIME,
    @enddate    DATETIME

)

RETURNS TABLE
AS

    RETURN (
        with cte
        as
        (
            select cast(cast(year(@startdate) as varchar(4))+'-'+right(100+month(@startdate),2)+'-01' as datetime) ymd
            union all
            select dateadd(m,1,ymd)
            from cte
            where dateadd(m,1,ymd)<=dateadd(m,1,@enddate)
        )
        select dateadd(d,-1,ymd) ymd from cte where dateadd(d,-1,ymd) between @startdate and @enddate
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...