Лучшая практика для хранения даты в MySQL от PHP

Где-нибудь в коде, что-то должно циклично выполниться. Единственным путем вокруг этого является полное разворачивание цикла:

int numDots = 0;
if (s.charAt(0) == '.') {
    numDots++;
}

if (s.charAt(1) == '.') {
    numDots++;
}


if (s.charAt(2) == '.') {
    numDots++;
}

... и т.д., но тогда Вы - тот, делающий цикл, вручную, в редакторе исходного кода - вместо компьютера, который выполнит его. Посмотрите псевдокод:

create a project
position = 0
while (not end of string) {
    write check for character at position "position" (see above)
}
write code to output variable "numDots"
compile program
hand in homework
do not think of the loop that your "if"s may have been optimized and compiled to
25
задан treznik 12 July 2009 в 17:54
поделиться

5 ответов

Если вы храните даты как временные метки Unix в базе данных, вы ложитесь тяжелой работой. Вам необходимо преобразовать их в форматы, которые вы хотите использовать, вам нужно выполнить вычисления между диапазонами дат, вам нужно создать запросы для получения данных в диапазоне. Это кажется нелогичным - наверняка ваше «время программиста» лучше всего потратить на решение реальных проблем?

Кажется, гораздо лучше хранить дату и время в надлежащем формате, который доступен MySQL, а затем использовать функции базы данных для создания запросов для данных, которые вы хотите. Время, которое вы потратите впустую на все преобразования и возню, огромно по сравнению с днем, проведенным за чтением (и пониманием) 11. 6 MySQL функции даты и времени

31
ответ дан 28 November 2019 в 18:32
поделиться

Одним из преимуществ использования типов даты / времени MySQL является возможность более простого использования функций даты / времени в MySQL .

] Тип DATE также имеет преимущество в том, что в нем хранятся только день, месяц и год, поэтому нет лишних затрат места или сложностей при сравнении, которые возникли бы в секундах с момента времени для ситуаций, когда вас заботит только день. а не время.

Лично я предпочитаю использовать базу данных как просто дамп для данных, поэтому такие функции малоинтересны. В PHP я предпочитаю хранить дату в целочисленном формате практически по указанным вами причинам.

7
ответ дан 28 November 2019 в 18:32
поделиться

Легче сравнивать, и mysql предоставляет множество функций даты.

1
ответ дан 28 November 2019 в 18:32
поделиться

Более простое обслуживание - это плюс. Увидеть настоящую дату, когда вы это сделаете:

select * from table where ...

- это очень приятно.

2
ответ дан 28 November 2019 в 18:32
поделиться

Использование времени базы данных более эффективно, потому что каждый раз, когда вам нужно сделать запрос, вам придется применять функцию from_unixtime() для извлечения данных из колонки unix datetime таблицы. Использование этой функции в выражении where полностью игнорирует использование индекса.

скажем, мой запрос:

select col1,col2,colUnixdatetime from table where colUnixdatetime between wtvdate1 and wtvdate2

Мне нужно выполнить:

select col1,col2,colUnixdatetime from table where From_Unixtime(colUnixdatetime) between wtvdate1 and wtvdate2

Этот вышеприведенный запрос будет полностью игнорировать любые индексы, ну, здесь нет никакого использования индексов, так как они никогда не будут использоваться, потому что мне всегда придется использовать функцию для получения реального времени даты.

Любая встроенная функция, используемая на LHS условия в предложении where, не будет использовать индексы, и если у вас ОГРОМНАЯ таблица, ваш запрос займет больше времени.

3
ответ дан 28 November 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: