Первый Нижегородский АвтоФорум (Архив)  

Вернуться   Первый Нижегородский АвтоФорум (Архив) > Форумы неавтомобильной тематики > Компьютерный
Нижегородский АвтоПортал (Архив) Справка Галереи Участники Автовзаимопомощь Календарь Поиск Сообщения за день Все разделы прочитаны

Последние сообщения с Пейджера. Показать все
За последнее время сообщений нет.
Внимание! Это архив форума.
Это архив форума и доступен в режиме "только чтение". Текущий форум находится по старому адресу www.autoforum.pro.
Компьютерный Для компьютерщиков за рулем, ну или для водил за компьютером.Обсуждения Crack'ов Keygen'ов и пиратского софта строго запрещены.

 
Опции темы Поиск в этой теме Опции просмотра
 
Старый 23-05-2007, 11:30 кто хорошо знает MySQL?   #1
egold
Матерый
есть таблица period с полями period_start и period_end...как прибавить к каждой дате два года? т.е.

UPDATE period
SET period_start = SOMEFUNC(period_start), period_end = SOMEFUNC(period_end)

MySQL 4.1.0
egold вне форума  
 
Старый 23-05-2007, 11:52   #2
DL
Завсегдатай
попробуй функцию
PERIOD_ADD(P,N)
Добавляет N месяцев к периоду P (в формате YYMM или YYYYMM). Возвращает величину в формате YYYYMM. Следует учитывать, что аргумент периода P не является значением даты:
mysql> SELECT PERIOD_ADD(9801,2);
-> 199803
----------------------
Добавлено позже.
----------------------
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
Данные функции производят арифметические действия над датами. Обе являются нововведением версии MySQL 3.22. Функции ADDDATE() и SUBDATE() - синонимы для DATE_ADD() и DATE_SUB(). В версии MySQL 3.23 вместо функций DATE_ADD() и DATE_SUB() можно использовать операторы + и -, если выражение с правой стороны представляет собой столбец типа DATE или DATETIME (см. пример ниже). Аргумент date является величиной типа DATETIME или DATE, задающей начальную дату. Выражение expr задает величину интервала, который следует добавить к начальной дате или вычесть из начальной даты. Выражение expr представляет собой строку, которая может начинаться с - для отрицательных значений интервалов. Ключевое слово type показывает, каким образом необходимо интерпретировать данное выражение. Вспомогательная функция EXTRACT(type FROM date) возвращает интервал указанного типа (type) из значения даты. В следующей таблице показана взаимосвязь аргументов type и expr: Значение Type Ожидаемый формат expr
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAYS
MONTH MONTHS
YEAR YEARS
MINUTE_SECOND "MINUTES:SECONDS"
HOUR_MINUTE "HOURS:MINUTES"
DAY_HOUR "DAYS HOURS"
YEAR_MONTH "YEARS-MONTHS"
HOUR_SECOND "HOURS:MINUTES:SECONDS"
DAY_MINUTE "DAYS HOURS:MINUTES"
DAY_SECOND "DAYS HOURS:MINUTES:SECONDS"
В MySQL формат выражения expr допускает любые разделительные знаки. Разделители, представленные в данной таблице, приведены в качестве примеров. Если аргумент date является величиной типа DATE и предполагаемые вычисления включают в себя только части YEAR, MONTH, и DAY (т.е. не содержат временной части TIME), то результат представляется величиной типа DATE. В других случаях результат представляет собой величину DATETIME:
mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
-> 1998-01-01 00:00:00

mysql> SELECT INTERVAL 1 DAY + "1997-12-31";
-> 1998-01-01

mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
-> 1997-12-31 23:59:59

mysql> SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL 1 SECOND);
-> 1998-01-01 00:00:00

mysql> SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL 1 DAY);
-> 1998-01-01 23:59:59

mysql> SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL "1:1" MINUTE_SECOND);
-> 1998-01-01 00:01:00

mysql> SELECT DATE_SUB("1998-01-01 00:00:00", INTERVAL "1 1:1:1" DAY_SECOND);
-> 1997-12-30 22:58:59

mysql> SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR);
-> 1997-12-30 14:00:00

mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
-> 1997-12-02

Если указанный интервал слишком короткий (т.е. не включает все части интервала, ожидаемые при заданном ключевом слове type), то MySQL предполагает, что опущены крайние слева части интервала. Например, если указан аргумент type в виде DAY_SECOND, то ожидаемое выражение expr должно иметь следующие части: дни, часы, минуты и секунды. Если в этом случае указать значение интервала в виде "1:10", то MySQL предполагает, что опущены дни и часы, а данная величина включает только минуты и секунды. Другими словами, сочетание "1:10" DAY_SECOND интерпретируется как эквивалент "1:10" MINUTE_SECOND. Аналогичным образом в MySQL интерпретируются и значения TIME - скорее как представляющие прошедшее время, чем как время дня. Следует учитывать, что при операциях сложения или вычитания с участием величины DATE и выражения, содержащего временную часть, данная величина DATE будет автоматически конвертироваться в величину типа DATETIME:
mysql> SELECT DATE_ADD("1999-01-01", INTERVAL 1 DAY);
-> 1999-01-02

mysql> SELECT DATE_ADD("1999-01-01", INTERVAL 1 HOUR);
-> 1999-01-01 01:00:00

При использовании некорректных значений дат результат будет равен NULL. Если при суммировании MONTH, YEAR_MONTH или YEAR номер дня в результирующей дате превышает максимальное количество дней в новом месяце, то номер дня результирующей даты принимается равным последнему дню нового месяца:
mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH);
-> 1998-02-28

Последний раз редактировалось DL, 23-05-2007 в 11:53. Причина: Автоматическое склеивание.
DL вне форума  
 
Старый 23-05-2007, 12:26   #3
egold
Матерый
это не пойдет, мне надо имя поля на вход подавать...а не конкретную дату...
egold вне форума  
 
Старый 23-05-2007, 12:28   #4
DL
Завсегдатай
дык подавай имя поля
period_start = DATE_ADD(period_start,параметры необходимые тебе)
DL вне форума  
 
Старый 23-05-2007, 13:15   #5
egold
Матерый
пасиб. сработало
egold вне форума  
 
Старый 23-05-2007, 13:17   #6
DL
Завсегдатай
ну ты это мануалы почитывай если что
DL вне форума  
 
Старый 29-05-2007, 00:13   #7
zOrg
Наблюдатель
и в след раз пиши не MySQL а SQL тут язык тебе нужен а не конкретная субд )
zOrg вне форума  
 
Старый 29-05-2007, 04:29   #8
Telepuz
Мелкий лавочник
А разве синтаксис языка не разный в разных СУБД?
Telepuz вне форума  
 
Старый 29-05-2007, 11:02   #9
dem
Старожил
именно что разный...а всякие функции типа приведенной тут даты - времени ваще к чистому sql отношения не имеют и в каждом диалекте реализованы по-разному...если реализованы вообще)
__________________
Любое настоящее путешествие включает в себя возвращение
dem вне форума  
 
Старый 29-05-2007, 11:14   #10
DL
Завсегдатай
есть некие стандарты языка
вобщем-то простые запросы в разных SQL субд одинаково выглядят
DL вне форума  
 
Старый 29-05-2007, 11:21   #11
Пух
Старожил
простые запросы понятие растяжимое.даже простые джойны в разых диалектах могут иметь разный синтаксис.
но SQL 92 поддерживают все. и его можно смело всегда использовать.
что касаемо ф-ий, а речь здесь идет о ф-ях, то даже ни о каких похожестях говорить не приходиться. все разное.
Пух вне форума  


Здесь присутствуют: 1 (пользователей - 0 , гостей - 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +4, время: 07:02.


vBulletin v3.5.4, Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Хостинг предоставлен компанией ТТК