Читал тут комментарии к «В августе сорок четвертого«, зацепился за вот такое:
Работая в военных архивах, я даже не десятки, а сотни раз встречался с удивительнейшими неточностями и накладками. Своими глазами я видел, например, книгу погребения стрелкового полка, где датой гибели сорока семи военнослужащих указано… 31 февраля 1942 года. Но это подлинный документ, и, отвечая сыну одного из сорока семи, сотрудники архива указали датой гибели его отца 31 февраля 1942 года, в скобках оговорив: «Так в документе».
Скажите, товарищи программисты, а как ваша любимая система воспримет дату «31 февраля 1942 года»? Есть ли у вас возможность скормить ей заведомо несуществующую дату, прикрываясь словами «Так в документе»?
UPD Что характерно — ОБД «Мемориал» находит 145 записей с 31 февраля 1942 года.
rh=> insert into zz(d) values(‘1942/02/28’);
INSERT 0 1
rh=> insert into zz(d) values(‘1942/02/29’);
ОШИБКА: значение поля типа date/time вне диапазона: «1942/02/29»
СТРОКА 1: insert into zz(d) values(‘1942/02/29’);
Вот как-то так…
А на 31 февраля как ругаться будет? Совсем матерно или так же?
rh=> insert into zz(d) values(‘1942/02/31’);
ОШИБКА: значение поля типа date/time вне диапазона: «1942/02/31»
СТРОКА 1: insert into zz(d) values(‘1942/02/31’);
rh=> insert into zz(d) values(‘1942/Feb/28’);
INSERT 0 1
rh=> insert into zz(d) values(‘1942/Feb/31’);
ОШИБКА: значение поля типа date/time вне диапазона: «1942/Feb/31»
СТРОКА 1: insert into zz(d) values(‘1942/Feb/31’);
по-моему мне где-то попадалось, что из 06/31 молча делалось 07/01… А, вспомнил!
$ echo «» | php
1942/02/28
$ echo «» | php
1942/03/03
«из 06/31 молча делалось 07/01» — в Java так.
Гребаный вордпресс!
$ echo «(? print date(\»Y/m/d\\n\»,mktime(0,0,0,2,28,1942)) ?)» | php
1942/02/28
$ echo «(? print date(\»Y/m/d\\n\»,mktime(0,0,0,2,31,1942)) ?)» | php
1942/03/03
Скобки поменять на нужные.