1. SQL / Говнокод #17751

    −173

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    select 
    	name,
    	CAST(date AS DATE) date, 
    	case 
    		when date>=dmin 
    		then dmax 
    		else dmin 
    	end
    from 
    (	
    	select  name, date,
    		DATEFROMPARTS(y1,4, (y1/2+y1/100-y1/400-5)%7+2) dmin,
                    DATEFROMPARTS (y2,4,(y2/2+y2/100-y2/400-5)%7+2) dmax
    	from
    	(
    		select name, date,
    			y1+4*(sign(y1%400)*(sign(y1%100)-1)) y1,
                            y2-4*(sign(y2%400)*(sign(y2%100)-1)) y2
    		from (
    			select name, date, 
    			year(date)/4*4 y1, year(date)/4*4 +4 y2
    			from Battles
    		)t
     	)t
    )t

    Задание:

    Выборы Директора музея ПФАН проводятся только в високосный год, в первый вторник апреля после первого понедельника апреля.
    Для каждой даты из таблицы Battles определить дату ближайших (после этой даты) выборов Директора музея ПФАН.
    Вывод: сражение, дата сражения, дата выборов. Даты выводить в формате "yyyy-mm-dd".

    Обратите на внимание на
    1 генерацию года
    2 генерацию дня из года

    Запостил: kegdan, 09 Марта 2015

    Комментарии (10) RSS

    • "Я познаю мир: магические формулы каббалы"
      Ответить
    • >в первый вторник апреля после первого понедельника апреля.
      Лол.
      Ответить
      • Че лол? Если апрель начинается во вторник, то нужно брать 7 число.
        Ответить
        • восьмое
          Ответить
          • А что если апрель начинается с нуля?
            Ответить
          • > восьмое
            склонен считать, что в этом случае надо ждать следующих 4 года
            ибо вторник 8 апреля уже нихуя не первый вторник апреля
            Ответить
            • валидация требует что бы были 8ые апреля

              кстати это вот с этого сайтика

              http://www.sql-ex.ru/
              Ответить
              • В настоящее время на рейтинговых этапах мы используем Microsoft SQL Server 2012
                CAST(date AS DATE) date

                почисть transaction log
                transaction log сам себя не почистит
                Ответить
                • Во время бекапов, емнип, подрезается этот сраный лог.
                  Ответить

    Добавить комментарий