Люди! Подскажите! now() + interval "FieldName" не работает..

Screjet

Новичок
Люди! Подскажите! now() + interval "FieldName" не работает..

Люди! Подскажите, как заставить такую инструкцию работать:
PHP:
now() + interval "FieldName"
с классическим подходом все ок:
PHP:
now() + interval 1 day
но "1 day" в моем случае величина переменная, как быть?
 

RomikChef

Guest
вместо непонятной строчки "FieldName"
подставить переменную, которая содержит нужное значение.
 

Screjet

Новичок
RomikChef
PHP:
create table temp(intrvl varchar(10));
insert into `temp` set intrvl='1 day';
select now() + interval "intrvl" from `temp`;
последняя строка не работает
 

Апельсин

Оранжевое создание
> select now() + interval "intrvl" from `temp`;

а в чем глубокий смысл этого запроса?
лень ручками что ли написать?
 

Screjet

Новичок
Апельсин

есть две табл: периоды и даты (условно)
нужно пересчитать даты согласно периодам
 

Screjet

Новичок
chira

не.. не пойдет.. в одном месяце 30 дней, в другом 31 день.. и т.д. Думаю решить эту задачку путем UDF. Люди! ессси ктото решал или знает где решение, подскажите плз..

p/s Пока 5-й мускл не вышел :) Он будет держать хранимые процедуры и триггеры..
 

chira

Новичок
Тогда не понятно , что ты хочешь.
При чем тут количество дней в месяце?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Screjet
Люди! ессси ктото решал или знает где решение, подскажите плз..
Стандартный ответ на такие вопросы: решением является переход на СУБД, которая поддерживает нормальный тип INTERVAL, а не "syntactic sugar".

p/s Пока 5-й мускл не вышел :) Он будет держать хранимые процедуры и триггеры..
Ну или попросить начальство/заказчиков подождать до выхода Мыскль 5.0. Уверен, они отнесутся к этой просьбе с пониманием.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: chira
Тогда не понятно , что ты хочешь.
При чем тут количество дней в месяце?
Хм. Разница между
'1 февраля' + '1 месяц'
и
'1 февраля' + '24*30*3600 секунд'
какая-нибудь есть? ;)
 

tony2001

TeaM PHPClub
>Стандартный ответ на такие вопросы: решением является
> переход на СУБД, которая поддерживает нормальный тип INTERVAL, а не "syntactic sugar".
то есть попросить начальство дать время на переписывание всего софта с самого начала. "Уверен, они отнесутся к этой просьбе с пониманием." (с)
ценю твой юмор.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: tony2001
то есть попросить начальство дать время на переписывание всего софта с самого начала.
tony2001, для того, чтобы портировать что-то с MySQL много времени не требуется (опыт есть), существует даже ряд средств для автоматизации процесса.
И уж всяко это будет быстрее, чем дожидаться MySQL 5.0 :D
 

Screjet

Новичок
Sad Spirit
разница есть :)
либо бесплатно работать,
либо бесплатно бездельничать
:D
//шутю
 

chira

Новичок
2 Sad Spirit
Как ты определяешь , что тебе нужно добавить ко всем датам интервал в месяца или днях или неделях?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: chira
Как ты определяешь , что тебе нужно добавить ко всем датам интервал в месяца или днях или неделях?
Элементарно определяю: я использую строку содержащую слова 'month', 'day' или 'week'. :)

Код:
tst=# create table bar (itest interval);
CREATE TABLE
tst=# insert into bar values ('1 month');
INSERT 33390 1
tst=# insert into bar values ('30 days');
INSERT 33391 1
tst=# select '2003-02-01'::date + itest from bar;
      ?column?
---------------------
 2003-03-01 00:00:00
 2003-03-03 00:00:00
(2 rows)
 

chira

Новичок
Тебя интересует, как это выглядет чисто теоретичести или всетаки есть реальная ситуация?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: chira
Тебя интересует, как это выглядет чисто теоретичести или всетаки есть реальная ситуация?
Реальная ситуация есть у человека, задавшего исходный вопрос. А у меня есть реальный совет и реальное объяснение, почему твоё "решение" не катит.
 

Screjet

Новичок
chira

Да, реальная..
Пока обошелся скриптом, который построчно updatид записи..
 

chira

Новичок
2 Screjet

Есть ли условие которое определяет, что ты будешь добавлять n месяцев, n дней, n часов?
Как важен точный интервал времени.
2 месяца - это не точный интервал.
как вам такое выражение
между 02.05.2003 и 27.06.2003 два февраля и 1.107 марта

с другой стороны конечно
если к 02.05.2003 + 2 месяца , то должно получиться 02.07.2003
 
Сверху