|
|
|
|
|
для: Trianon
(29.01.2009 в 19:08)
| | Для чего мне нужно получить разницу дат? А для того чтобы узнать "юбилейная" она или нет и ВСЕ. Для этого достаточно получить разницу в месяцах м/у этими датами и сравнить с числом 60. Есть функция в MySQL: 'PERIOD_DIFF(YYYYMM, YYYYMM)' ( недавно обнаружил :) ), которая как раз и возвращает такую разницу и в ней можно не указывать день.
Я думаю задача решилась. | |
|
|
|
|
|
|
|
для: Adj
(29.01.2009 в 18:47)
| | >Вычесть знаменательную дату из текущую даты, чтобы узнать является ли она юбилейной.
Окей. Знаменательная дата 1969-01-XX . Текущая - сегодняшняя.
Как Вы хотите вычитать даты? | |
|
|
|
|
|
|
|
для: Trianon
(29.01.2009 в 18:15)
| | >Можете хранить дату и логический признак неопределенности дня месяца (в отдельном поле, само собой).
Тоже думал про такой способ. Думаю он пока самый оптимальный для такой задачи.
>сделать что?
Вычесть знаменательную дату из текущую даты, чтобы узнать является ли она юбилейной. | |
|
|
|
|
|
|
|
для: Temnovit
(29.01.2009 в 18:06)
| | Выполнять обычные арифметические операции над таким набором полей (как над моментом времени) будет весьма затруднительно. | |
|
|
|
|
|
|
|
для: Adj
(29.01.2009 в 18:06)
| | >Допустим есть дата, например, 01.1969 г (конкретный день неизвестен)
Это не дата. Дата задает точку на временной оси с точностью до суток.
>Если просто писать 01, то это же получаеться противоречить истории.
>Уж лучше ничего не писать, чем писать неправду.
Нагружать на поле даты несвойственную этому типу функцию - еще хуже.
Вы можете хранить две даты (начало и конец интервала) .
Можете хранить дату и логический признак неопределенности дня месяца (в отдельном поле, само собой).
Писать неправду Вам так или иначе придется, поскольку точной информацией Вы не обладаете.
>Конечно можно это решить написав функции на PHP,
>но хочеться сначала попробовать это сделать стандартными средствами MySQL.
сделать что? | |
|
|
|
|
|
|
|
для: Temnovit
(29.01.2009 в 18:06)
| | Можно и так конечно.
Спасибо за ответы.
Буду эксперементировать, рассмотрю и Ваш вариант. | |
|
|
|
|
|
|
|
для: Adj
(29.01.2009 в 12:49)
| | Я бы завел три поля, для года, месяца и дня. Не нужный атрибут можно оставить как NULL и потом не выводить его.
А выборка была бы примерно такой:
SELECT *
FROM events
ORDER BY year, month, day | |
|
|
|
|
|
|
|
для: Trianon
(29.01.2009 в 14:55)
| | Допустим есть дата, например, 01.1969 г. (конкретный день неизвестен) - какой-то значимый день в году, но он не должен выводиться каждый год, а лишь тогда, когда будет "юбелей" (5, 10, 15, 25, ,,,, лет). Чтобы ее вывести, надо получается вычесть из текущей даты дату 01.1969. Но MySQL не работает с датами у которых день например 0.
Если просто писать 01, то это же получаеться противоречить истории. Уж лучше ничего не писать, чем писать неправду.
Конечно можно это решить написав функции на PHP, но хочеться сначала попробовать это сделать стандартными средствами MySQL. | |
|
|
|
|
|
|
|
для: Trianon
(29.01.2009 в 14:55)
| | Я пологаю тем, что при выборке не будет понятно, нужно выводить день или только месяц. | |
|
|
|
|
|
|
|
для: Adj
(29.01.2009 в 17:53)
| | что "операции"?
К дате первого числа месяца можно прибавить чего угодно, и отнять тоже. | |
|
|
|
|