CMS Eleanor - Поиск
Полная версия этой страницы: Официальный форум Eleanor CMS » Типы данные в MySQL
Официальный форум Eleanor CMS » Для вебмастеров и владельцев сайтов » Комната программистов
Собственно Datetime или Timestamp?
Насколько я знаю, у обоих типов данных есть свои плюсы. В eleanor наблюдается Timestamp. В других движках наблюдаются разные варианты и так и так. Похоже, что разработчики разделились в этом вопросе.
Timestamp, насколько я знаю ввели для того, чтобы можно было легко управлять часовыми поясами. Да и вес в 4 байта по сравнению с 8 байтами Datetime лучше. Но всё же, каково Ваше мнение? Что лучше и почему?

P.S. Пожалуйста, не оставляйте варианты типа "а вон тот круче и ниипёт" :) Принимаются здравые доводы.
LuxCore
При использовании Timestamp у Вас не будет болеть голова о том, для какого часового пояса Вы пишете код. Применение, DateTime, я думаю, более узкое, например, Вы пишете код для кого-то, кто находится там же, где и Вы (например, Украина), и в другом часовом поясе не будет использоваться этот код. Либо DateTime можно использовать в рамках какого-либо предприятия. Если предполагается, что Ваше приложение будут просматривать люди из разных часовых поясов, то уж лучше использовать TimeStamp. Тем более, что ограничения с этого типа будет снято в нужный момент.
Вот полезная статья, кстати, http://habrahabr.ru/post/61391/
Цитата (LuxCore @ 2013-04-25, 10:26)
При использовании Timestamp у Вас не будет болеть голова о том, для какого часового пояса Вы пишете код. Применение, DateTime, я думаю, более узкое, например, Вы пишете код для кого-то, кто находится там же, где и Вы (например, Украина), и в другом часовом поясе не будет использоваться этот код. Либо DateTime можно использовать в рамках какого-либо предприятия. Если предполагается, что Ваше приложение будут просматривать люди из разных часовых поясов, то уж лучше использовать TimeStamp. Тем более, что ограничения с этого типа будет снято в нужный момент.
Вот полезная статья, кстати, http://habrahabr.ru/post/61391/


Честно сказать, прочитал эту статью перед созданием поста :) А как же выборка, ведь в Datetime будет быстрее если мы хотим сделать её по дням или месяцам например. Или я ошибаюсь?
В комментариях к статье кстати мнения разделились.
http://habrahabr.ru/post/69983/ Вот хороший пост нашёл на эту тему. Ответ там же.

Цитата
TIMESTAMP. Рассматривать его надо в сравнении с DATE и DATETIME: TIMESTAMP тоже предназначен для хранения даты и/или времени происхождения неких событий. Важное отличие между ними в диапазонах значений: очевидно, что TIMESTAMP не годится для хранения исторических событий (даже таких, как дни рождений), но отлично подходит для хранения текущих (логирование, даты размещения статей, добавления товаров, оформления заказов) и предстоящих в обозримом будущем событий (выходы новых версий, календари и планировщики и т.д).

Основное удобство использования типа TIMESTAMP состоит в том, что для столбцов этого типа в таблицах можно задавать значение по умолчанию в виде подстановки текущего времени, а так же установки текущего времени при обновлении записи. Если вам требуется эти возможности, то с вероятностью 99% TIMESTAMP — именно то, что вам нужно. (Как этоделать, смотрите в мануале.)

Итак, тип TIMESTAMP используем для хранения дат и времени свершения событий нашего времени, а DATETIME и DATE — для хранения дат и времени свершения исторических событий, или событий глубокого будущего.
LuxCore
Цитата (Quber @ 2021-06-25 11:23)
В комментариях к статье кстати мнения разделились
Ну а как же без этого.
Цитата (Quber @ 2021-06-25 11:23)
А как же выборка, ведь в Datetime будет быстрее если мы хотим сделать её по дням или месяцам например

Цитата (HabraHabr @ )
Napolsky, 5 июня 2009 в 14:32
А мне казалось что по dateTime многие выборки должны идти быстрее. Ведь логично, что например выборка по номеру месяца из записи вида YYYYMMDDHHMMSS должна осуществляться МНОГО быстрее, чем по записи вида timestamp. В случае c timestamp, как я понимаю, приходится каждое поле преобразовывать в дату и только потом производить операцию сравнения условия.

Arekus, 5 июня 2009 в 14:43
нет, не быстрее, так как строка (dt) переводится в число (int) переводится какое-то время, когда ts — это уже число. Речь идет про ограниченные выборки, разумеется.

Т. е. будут ситуации, когда Вам нужно будет выбирать по дням|месяцам|годам в поле TimeStamp либо наоборот (про наоборот я, конечно, и сам задумался :blink: )

Добавлено через 3 минут, 14 секунд:

Цитата (Quber @ 2013-04-25, 10:41)
http://habrahabr.ru/post/69983/ Вот хороший пост нашёл на эту тему. Ответ там же.
Полезно однако. Думаю, при разработке такой специфической исторической проги точно это отличие бы выскочило само по себе :)
Вопрос решён =)
А что насчёт varchar (255) vs tinytext ?
Как они поведут себя при полнотекстовом поиске?
есть кто живой?
Alexander
Quber, есть, есть :)
Цитата (Quber @ 2021-06-25 11:23)
Как они поведут себя при полнотекстовом поиске?

По идее одинаково.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.