Разбор меток времени - это в MySQL или в PHP? - PullRequest
4 голосов
/ 11 апреля 2010

Допустим, у вас есть таблица со столбцом timestamp, и вы хотите разбить этот столбец на два массива - $date и $time.

У тебя лично:

a) запрос, подобный этому DATE(timestamp), TIME(timestamp), или, возможно, даже до HOUR(timestamp), MINUTE(timestamp

b) возьмите столбец timestamp и проанализируйте его при необходимости с помощью цикла в PHP

Я чувствую, что (a) проще ... но я знаю, что Я ничего не знаю . И кажется немного непослушным, чтобы мой запрос попадал в один и тот же столбец 2 или 3 раза для вывода ...

Есть ли лучшая практика для этого?

Ответы [ 6 ]

3 голосов
/ 11 апреля 2010

(а), вероятно, хорошо, если это проще для вашей кодовой базы. Я большой поклонник того, что мне не нужно писать дополнительный код, который не нужен, и я люблю только оптимизировать, когда это необходимо. Для меня вытащить всю дату, а затем анализ кажется преждевременной оптимизации.

Всегда помните, что на серверах sql есть много умов для оптимизации запросов , поэтому вам не нужно.

Так что переходите к пункту а), если вы обнаружите, что собака медлительна или вызывает проблемы, переходите к пункту б). Я подозреваю, что а) будет делать все, что вы хотите, и вы никогда не будете думать об этом снова.

2 голосов
/ 11 апреля 2010

б) - это то, что я следую, и я использую это каждый раз. Это также дает вам возможность контролировать то, как вы хотите, чтобы он отображался в вашем интерфейсе. Подумайте об этом: если вы следуете а) и хотите внести изменения, вам нужно будет изменить все запросы вручную. Но если вы используете б), вы можете просто вызвать функцию с этим значением (из БД), и все готово. Если вам когда-нибудь понадобится что-то изменить, просто измените это в этой функции и в альте! Разве это не похоже на экономию времени ???

Надеюсь, это поможет.

2 голосов
/ 11 апреля 2010

Я бы лично сделал (б). В любом случае вы будете зацикливать строки, а функции PHP strtotime() и date() настолько гибки, что справятся с большинством проблем форматирования даты / времени, с которыми вы столкнулись.

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

1 голос
/ 11 апреля 2010

Если вам это нужно в самом запросе SQL (например, в WHERE, GROUP BY, ORDER BY и т. Д.), Тогда предпочтителен способ а).Если вам это нужно в логике кода (PHP или что-то еще), тогда предпочтителен способ b).

Если ваш PHP-код на самом деле выполняет задачу, которая может быть так же хорошо справлена ​​с SQL, тогда я пойдудля этого также.Другими словами, способ b) предпочтителен, только если вы собираетесь форматировать дату только для целей display .

1 голос
/ 11 апреля 2010

Я бы тоже использовал б). Я думаю, что важно, чтобы, если мне в какой-то момент понадобилось использовать имена в днях или месяцах на другом языке. Я могу использовать поддержку языкового стандарта PHP, чтобы перевести его на данный язык, чего не было бы в а).

0 голосов
/ 11 апреля 2010

Я думаю, это сводится к тому, вы чувствуете себя как дома при написании PHP-кода или запросов MySQL?

Я думаю, что это больше вопрос стиля кодирования, чем технической осуществимости, и вы можете выбрать свой стиль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...