Должен ли я использовать DATE и TIME в качестве полей, а не DATETIME - PullRequest
1 голос
/ 22 мая 2010

У меня есть проект по созданию телевизионного гида под названием mytvguide в базе данных - я использую PHPMyAdmin. Это структура для одной таблицы, которая называется tvshow1:

Field       Type             
channel     varchar(255)             
date        date    No               
airdate     time    No               
expiration  time    No               
episode     varchar(255)     
setreminder varchar(255)    

но я не уверен, как заставить ДАТУ, ВРЕМЯ работать со скриптом разбиения на страницы (ниже скрипт, который работает для версии с DATETIME): http://pastebin.com/6S1ejAFJ

Однако, хотя DATETIME работает - он показывает программы, которые транслируются в этот день, вот так:

Programme 1 showing on Channel 1 2:35pm "Episode 2" Set Reminder
Programme 1 showing on Channel 1 May 26th - 12:50pm "Episode 3" Set Reminder
Programme 1 showing on Channel 1 May 26th - 5:55pm "Episode 3" Set Reminder

но я не совсем уверен, как скопировать это для полей, которые используют DATE, функции TIME, как показано выше.

Ответы [ 3 ]

1 голос
/ 22 мая 2010

В MySQL вы можете использовать DATE_FORMAT (см. руководство )

Например:

SELECT DATE_FORMAT(airdate, "%d %M %Y - %H:%i") FROM programs WHERE ....

В противном случае вы просто извлекаете значение как есть и изменяете его с помощью функции времени / даты, предоставляемой PHP

1 голос
/ 22 мая 2010

Отвечая на ваш вопрос название:

Тип

datetime довольно удобен, и вы всегда можете отформатировать это поле, используя функции date () или time (), чтобы получить соответствующую часть, или любую другую функцию из огромного списка

Что касается тела вопроса, тип поля не имеет никакого отношения к нумерации страниц. Есть конкретный вопрос?

0 голосов
/ 22 мая 2010

Если вы хотите, чтобы ваша база данных масштабировалась, вы должны следовать одному важному правилу: избегайте функций для каждой строки, таких как if, coalescse, case и yes, date() и time(). * 1006. *

Атрибут (столбец) в таблице должен быть наименьшей единицей, которую вы обрабатываете. Если вам нужно выполнить поиск по дате, сохраните дату отдельно. Не объединяйте это в дату и время, когда вам придется извлекать его в ваших select заявлениях.

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

Обычно лучше вставить два поля вместе (например, дату и время в дату и время для вашего сценария нумерации страниц), чем пытаться разделить другим способом (для других целей).

Конечно, если вы никогда не намереваетесь использовать дату и время отдельно в своих запросах, или если ваша база данных останется маленькой, не стесняйтесь игнорировать мою напыщенную речь: -)

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