Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > TIMESTAMP или INT ?


Автор: Wowa 30.1.2005, 12:25
TIMESTAMP или INT ?
Что выбрать для хранения даты и времени в базе? Начиная с четвертой версии MySQL TIMESTAMP - не поддерживает размерность.

TIMESTAMP возвращает всегда значение типа YYYY-MM-DD и время. Как сделать, чтобы мне дата вернулась числом(т.е. без черточек)?

Автор: Song 30.1.2005, 12:35
Admin
Если предполагается, что время будет в UNIX, то безусловно INT(10) т.к. даже операции по этому полю будут идти быстрей чем по DATETIME.

Автор: Mal Hack 30.1.2005, 12:37
Цитата(Admin @ 30.1.2005, 12:25)
TIMESTAMP возвращает всегда значение типа YYYY-MM-DD и время. Как сделать, чтобы мне дата вернулась числом(т.е. без черточек)?

http://dev.mysql.com/doc/mysql/ru/date-and-time-functions.html
Можно преобразовывать прямо в запросе, но я приверженец использования INT(14) и в него UNIX TIME.... Числа - ноль проблем при сравненнии...

Автор: Wowa 30.1.2005, 12:48
Есть дата в формате TIMESTAMP: 1997-10-04 22:23:00
Превращаем её в число: 19971004222300

И чем это лучше, чем unixtime ?

Автор: Wowa 30.1.2005, 13:08
Цитата(Song @ 30.1.2005, 10:35)
Если предполагается, что время будет в UNIX, то безусловно INT(10) т.к. даже операции по этому полю будут идти быстрей чем по DATETIME.

Оставить в строке только числа, а потом сравнивать, как два числа - операция также не из трудных.

Автор: Song 30.1.2005, 14:02
Admin операции на целые числа всё-равно быстрей делаются чем даже CHAR, не говоря уж о DATETIME

Автор: Gold Dragon 30.1.2005, 14:46
Цитата(Mal @ 30.1.2005, 12:37)
но я приверженец использования INT(14)

и я тоже smile

Автор: Song 30.1.2005, 16:29
Цитата(Admin @ 30.1.2005, 13:48)
И чем это лучше, чем unixtime ?

Тем что мускул во всех операциях работы с DATETIME всё время конвертирует в целое его представление и все операции уже делает в целом. Это сам понимаешь, медленней чем работать с целыми числами сразу.
У DATETIME только одно преимущество - наглядность.

Автор: Kesh 30.1.2005, 21:34
Формат данных, в котором MySQL извлекает и показывает величины TIMESTAMP, зависит от количества показываемых символов. Это проиллюстрировано в приведенной ниже таблице. Полный формат TIMESTAMP составляет 14 десятичных разрядов, но можно создавать столбцы типа TIMESTAMP и с более короткой строкой вывода:
Тип столбца Формат вывода
TIMESTAMP(14) YYYYMMDDHHMMSS
TIMESTAMP(12) YYMMDDHHMMSS
TIMESTAMP(10) YYMMDDHHMM
TIMESTAMP(8) YYYYMMDD
TIMESTAMP(6) YYMMDD
TIMESTAMP(4) YYMM
TIMESTAMP(2) YY

Независимо от размера выводимого значения размер данных, хранящихся в столбцах типа TIMESTAMP, всегда один и тот же. Чаще всего используется формат вывода с 6, 8, 12 или 14 десятичными знаками. При создании таблицы можно указать произвольный размер выводимых значений, однако если этот размер задать равным 0 или превышающим 14, то будет использоваться значение 14. Нечетные значения размеров в интервале от 1 до 13 будут приведены к ближайшему большему четному числу.

Автор: Wowa 30.1.2005, 23:44
Kesh Это все хорошо, но начиная с четвертой версии MySQL TIMESTAMP не имеет размерность. И вседга содержит значения в ввиде: YYYY-MM-DD HH:MM:SS
Если при вызове добавить +0, то значение вернется, как число, т.е. без разделителей.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)