at

Ошибка 10000 года

Jun 20, 2006 11:50

Пусть кто-нибудь из сетевых писталей (Леня Каганов, например) напишет рассказ на тему "ошибка 10000 года". На дворе 9999 год, в моде одежда в стиле ретро а ля 30-е годы 51-го века, у всех уже есть персональные роботы и видеотелефоны, но флаеры так и не стали посведневной реальностью, а полеты в космос дальше Луны по-преженему считаются ( Read more... )

идеи, креатив, компьютер

Leave a comment

Comments 5

fando June 20 2006, 21:30:27 UTC
Хранить год в символьном представлении ("пять знаков под год")- это как-то отдает мейнфреймами... Кто ж так нынче делает-то?
А вот софт, который хранит дату в так называемом "юниксовом формате" (т.е. 32-битное знаковое целое, соответствующее количеству секунд прошедших с 1 января 1970) обломится с началом 2038 года, до которого мы можем даже дожить.
Кстати, не смотя на кажущуюся нелепость формата, он весьма популярен и является практически стандартом для 32-битных C приложений. Но, правда, надеюсь что 2038 32-битного софта не останется.
http://www.answers.com/topic/unix-time

Reply

at June 20 2006, 21:58:34 UTC
В большинстве баз данных, с которыми я сталкиваюсь, тип date имеет длинну 8 байт, и что-то мне подсказывает, что имеется в виду диапазон "00010101"-"99991231", a не 1-2^64. В любом случае, вне зависимости от формата хранения, юзеру и программисту даты представляются в 8- (реже 6-) значном формате. Подставь литерал "01/01/10000" в большинство нынешних программ - получишь ошибку. Только что проверил интереса ради на Excele.

Reply

fando June 20 2006, 22:26:09 UTC
А ты попробуй в тот же Excel введи какую-нибудь дату до начала 20-го века.
Так что в данном случае дело точно не в количестве символов, отведенных под год.

Что касается баз данных, к примеру, MS SQL Server не умеет хранить одну только дату, без времени дня. Так что в 8 байт (или 4 байта в случае smalldatetime - в котором тоже и дата и время дня) он упаковывает и то, и другое. Хранить дату посимвольно было бы слишком неэффективно.

Oracle и DB2 используют для хранения года по два байта.
http://www.devx.com/dbzone/Article/28713/0/page/2

А вот PostgreSQL в 8-байтовый дато-временной тип умудрился запихать даты аж до 1465001 года.
http://www.postgresql.org/docs/7.3/interactive/datatype-datetime.html

В общем, посимвольно дату никто, вроде, не хранит.

Reply

at June 20 2006, 22:42:58 UTC
Спасибо, взял хорошую идею для юмористического сай-фая (я же не зря Каганова предлагал) и все опошлил.

Reply


Leave a comment

Up