|
|
|
| Есть проблема - создаю базу игр, естественно, у каждой игры есть дата релиза. У некоторых она известа с точностью до числа месяца, у других лишь заявлен квартал или месяц выхода.
В таблице для даты релиза я отвел специальное поле типа DATETIME.
Игру с заранее известной точной датой выхода туда впихнуть не сложно, а вот как быть, если мне нужно вставить запись с игрой, у которой известен лишь квартал или месяц выхода, и как потом оттуда извлечь эти данные? | |
|
|
|
|
|
|
|
для: cyberface
(29.08.2006 в 10:06)
| | Лучше заведите ещё одно текстовое поле - там где оно пустое - пользуйтесь DATETIME, там, где оно заполнено - содержимым текстового поля, при этом в DATETIME помещайте примерную дату, чтобы сортировка работала. | |
|
|
|
|
|
|
|
для: cheops
(29.08.2006 в 11:18)
| | А как вы смотрите на на следующий вариант:
Завести поле dateformat типа ENUM с содержанием exact, quarter, month, которое хранит сведенья о том как нужно выбирать данные, ну и выбирать дату следующим образом.
SELECT
CASE dateformat
WHEN 'exact' THEN DATE_FORMAT(realise_date, '%e %M %Y')
WHEN 'quarter' THEN QUARTER(realise_date)
WHEN 'month' THEN DATE_FORMAT(realise_date, '%M %Y')
END
FROM games
|
А при добавке игры, если не знаешь точной даты релиза, просто приводить примерную дату и способ ее вывода. | |
|
|
|
|
|
|
|
для: cyberface
(29.08.2006 в 14:30)
| | тогда уж
SELECT
CASE dateformat
WHEN 'exact' THEN DATE_FORMAT(realise_date, '%e %M %Y')
WHEN 'quarter' THEN CONCAT(QUARTER(realise_date), ' quarter of ', DATE_FORMAT(realise_date, '%Y'))
WHEN 'month' THEN DATE_FORMAT(realise_date, '%M %Y')
END
FROM games
|
но идея симпатичная. ) | |
|
|
|
|
|
|
|
для: Trianon
(29.08.2006 в 14:35)
| | Действительно. =) Что-то я не подумал, что вместе с кварталом нужно еще и год выводить :) | |
|
|
|