mysql_real_escape_string / Говнокод #2865 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
select date '1582-10-31' - date '1582-10-01' + 1 "Дней в октябре 1582г" from dual;

Выдаёт число 21

Даже и не знаю как это назвать. Вроде все правильно, но как-то заковыристо.

Запостил: dim1r dim1r, (Updated )

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

  • Это Оracle такой нюанс знает. А другие базы знают ?
    Ответить
  • Википедия

    Григориа́нский календа́рь в католических странах был введён папой Григорием XIII 4 октября 1582 года взамен старого юлианского: следующим днём после четверга 4 октября стала пятница 15 октября (дней с 5 по 14 октября 1582 в григорианском календаре нет).

    Так что все правильно
    Ответить
    • А в .Net-е лажа, new DateTime(1582, 10, 31) - new DateTime(1582, 10, 1) - вернул 30 дней. 🙁
      Ответить
    • Утро вечера мудренее. По ссылке HyperGeek стало понятно, почему в MySQL, еще и в .Net, возращает 30 дней - календарь в разных странах вводился в разное время. Поэтому Оракл с одной стороны прав, с другой стороны не прав
      Ответить
      • Оракл со всех сторон прав, потому что у него есть еще и:
        alter session set nsl_calendar=<...>

        задающий тип календаря для сессии, и период перехода, если таковой был, зависит от него...
        Ответить
  • О_о познавательно... даже и не знал об этом...
    вот так вот читаешь говнокод и уму-разуму набираешься...
    Ответить
  • а вообще to_date бы хорошо использовать,
    либо писать "alter session set nsl_date_format" при коннекте в базу.
    Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8