А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я
0-9 A B C D I F G H IJ K L M N O P Q R S TU V WX Y Z #


Чтение книги "MySQL 5.0. Библиотека программиста" (страница 17)

   Функции получения компонентов даты и времени

   Рассмотрим функции, получающие в качестве аргумента дату и/или время и возвращающие один из компонентов аргумента.
   • DATE('<Дaтa и время>').
   Функция DATE() получает в качестве аргумента дату или дату и время и возвращает дату, отсекая время. Например, DATE (2007-12-12 12:30:00) возвращает значение 2007-12-12.
   • TIME('<Дaтa и время>').
   Функция TIME() получает в качестве аргумента время либо дату и время и возвращает время, отсекая дату. Например, TIME (2007-12-12 12:30:00) возвращает значение 12:30:00.
   • DAY ('<Дата или дата и время>'), DAYOFMONTH ('<Дата или дата и время>').
   Функции DAY() и DAYOFMONTH() получают в качестве аргумента дату или дату и время и выделяют из нее число (номер дня в месяце). Например, DAY(2007-12–12) возвращает значение 12.
   • DAYNAME('<Дата или дата и время>').
   Функция DAYNAME() получает в качестве аргумента дату или дату и время и возвращает наименование дня недели, которым является эта дата. Например, DAYNAME(2007-12-12) возвращает значение Wednesday, поскольку 12 декабря 2007 г. – среда.
   Если требуется получить название дня недели на русском языке, выполните команду


   SET LC_TIME_NAMES='ru_RU';

   или

   SET GLOBAL LC_TIME_NAMES='ru_RU';

   (о том, как действуют команды SET и SET GLOBAL, рассказывалось в подразделе «Вставка отдельных строк», когда речь шла об установке значения переменной sql_mode).
...
   Примечание
   Чтобы установить для отображения дат украинский или белорусский язык, присвойте переменной lc_time_names значение uk_UA или, соответственно, be_BY.
   • DAYOFWEEK('<Дата или дата и время>').
   Функция DAYOFWEEK() получает в качестве аргумента дату или дату и время и вычисляет порядковый номер дня недели, которым является эта дата (1 – воскресенье, 2 – понедельник и т. д.). Например, DAYOFWEEK(2007-12-12) возвращает значение 4, и это означает, что 12 декабря 2007 г. – среда.
   • WEEKDAY('<Дата или дата и время>').
   Функция WEEKDAY() получает в качестве аргумента дату или дату и время и вычисляет порядковый номер дня недели, которым является эта дата (0 – понедельник, 1 – вторник и т. д.). Например, DAYOFWEEK(2007-12-12) возвращает значение 2, и это означает, что 12 декабря 2007 г. – среда.
   • DAYOFYEAR('<Дата или дата и время>').
   Функция DAYOFYEAR() получает в качестве аргумента дату или дату и время и вычисляет для нее порядковый номер дня в году. Например, DAYOFYEAR(2007-12-12) возвращает значение 34 6.
   • LAST_DAY('<Дата или дата и время>').
   Функция LAST_DAY() получает в качестве аргумента дату или дату и время и возвращает дату, соответствующую последнему дню в месяце, которому принадлежит исходная дата. Например, LAST_DAY(2007-12-12) возвращает значение 2007-12-31, поскольку последнее число декабря – 31.
   • WЕЕK ('<Дата или дата и время>' [,Правило нумерации]).
   Функция WEEK() получает в качестве аргумента дату или дату и время и возвращает номер недели в году. По умолчанию неделя считается начинающейся с воскресенья, и первой неделей считается та неделя, воскресенье которой принадлежит данному году, а для дней, предшествующих первой неделе, номер недели равен 0. Например, WEEK(2007-12-31) = 52 и WEEK(2008-01-01) = 0.
   Вы можете также задать параметр, определяющий правило нумерации недель.
   • 0 – неделя считается начинающейся с воскресенья, первая неделя года – целиком находящаяся в этом году, для дней, предшествующих первой неделе, номер недели равен 0. Например, WEEK('2008-01-01',0) = 0.
   • 1 – неделя считается начинающейся с понедельника, первая неделя года – та, более трех дней которой находится в этом году, для дней, предшествующих первой неделе, номер недели равен 0. Например, WEEK('2008-01-01',1) = 1.
   • 2 – неделя считается начинающейся с воскресенья, первая неделя года – целиком находящаяся в этом году, для дней, предшествующих первой неделе, номер недели равен номеру последней недели в предыдущем году. Например, WEEK('2008-01-01',2) = 52.
   • 3 – неделя считается начинающейся с понедельника, первая неделя года – та, более трех дней которой находится в этом году, для дней, предшествующих первой неделе, номер недели равен номеру последней недели в предыдущем году. Например, WEEK('2008-01-01',3) = 1.
   • 4 – неделя считается начинающейся с воскресенья, первая неделя года – та, более трех дней которой находится в этом году, для дней, предшествующих первой неделе, номер недели равен 0. Например, WEEK('2008-01-01',4) = 1.
   • 5 – неделя считается начинающейся с понедельника, первая неделя года – целиком находящаяся в этом году, для дней, предшествующих первой неделе, номер недели равен 0. Например, WEEK('2008-01-01',5) = 0.
   • 6 – неделя считается начинающейся с воскресенья, первая неделя года – та, более трех дней которой находится в этом году, для дней, предшествующих первой неделе, номер недели равен номеру последней недели в предыдущем году. Например, WEEK('2008-01-01',6) = 1.
   • 7 – неделя считается начинающейся с понедельника, первая неделя года – целиком находящаяся в этом году, для дней, предшествующих первой неделе, номер недели равен номеру последней недели в предыдущем году. Например, WEEK('2008-01-01',7) = 53.
   • WEEKOFYEAR('<Дата или дата и время>').
   Является синонимом WEEKOFYEAR(<Дата или дата и время>,3).
   • MONTHNAME('<Дата или дата и время>').
   Функция MONTHNAME() получает в качестве аргумента дату или дату и время и возвращает наименование месяца, которому принадлежит эта дата. Например, MONTHNAME('2007-12-12') возвращает значение December. О том, как настроить вывод дат на русском языке, рассказывалось при описании функции DAYNAME().
   • MONTH('<Дата или дата и время>').
   Функция MONTH() получает в качестве аргумента дату или дату и время и возвращает номер месяца, которому принадлежит эта дата. Например, MONTH('2007-12-12') возвращает значение 12.
   • QUARTER('<Дата или дата и время>').
   Функция QUARTER() получает в качестве аргумента дату или дату и время и возвращает номер квартала, которому принадлежит эта дата. Например, QUARTER('2007-12-12') возвращает значение 4.
   • YEAR('<Дата или дата и время>').
   Функция YEAR() получает в качестве аргумента дату или дату и время и возвращает номер года, которому принадлежит эта дата. Например, YEAR('2007-12–12') возвращает значение 2007.
   • YEARWEEK('<Дата или дата и время>' [,Правило нумерации]).
   Функция YEARWEEK() получает в качестве аргумента дату или дату и время и возвращает номер года и номер недели в году в формате YYYYWW. По умолчанию неделя считается начинающейся с воскресенья, и первой неделей считается та неделя, воскресенье которой принадлежит данному году, а дни, предшествующие первой неделе, считаются относящимися к последней неделе предыдущего года. Например, YEARWEEK('2007-12-31') = YEARWEEK('2008-01-01') = 200752, и это означает, что обе даты относятся к 52-й неделе 2007 г.
   Вы можете также задать параметр, определяющий правило нумерации недель. Этот параметр аналогичен соответствующему параметру функции WEEK(), о которой мы рассказывали выше, однако для тех дат, для которых функция WEEK() возвращает значение 0, функция YEARWEEK() возвращает номер предыдущего года и номер последней недели предыдущего года. Например, WEEK('2008-01-01',5) = 200753.
   • HOUR('<Время или дата и время>').
   Функция HOUR() получает в качестве аргумента время или дату и время и выделяет из нее часы. Например, HOUR('12:30:00') возвращает значение 12.
   • MINUТЕ('<Время или дата и время>').
   Функция MINUTE() получает в качестве аргумента время или дату и время и выделяет из нее минуты. Например, MINUTE('12:30:00') возвращает значение 30.
   • SECOND('<Время или дата и время>').
   Функция SECOND() получает в качестве аргумента время или дату и время и выделяет из нее секунды. Например, SECOND('12:30:00') возвращает значение 0.
   • EXTRACT('<Наименование периода>' FROM '<Дата и/или время>'). Функция EXTRACT() – наиболее общая из функций получения компонентов даты и времени. Первым ее аргументом является наименование компонента или диапазона компонентов, которые нужно выделить из даты:
   • DAY – число (номер дня в месяце);
   • WEEK – номер недели в году;
   • MONTH – номер месяца;
   • QUARTER – номер квартала;
   • YEAR – номер года;
   • HOUR – часы;
   • MINUTE – минуты;
   • SECOND – секунды;
   • YEAR_MONTH – номер года и номер месяца;
   • DAY_HOUR – число и часы;
   • DAY_MINUTE – число, часы и минуты;
   • DAY_SECOND – число, часы, минуты и секунды;
   • HOUR_MINUTE – часы и минуты;
   • HOUR_SECOND – часы, минуты и секунды;
   • MINUTE_SECOND – минуты и секунды.
   Вторым аргументом функции может быть дата и время, а также, в зависимости от извлекаемого компонента, либо дата, либо время.
   Например, EXTRACT(WEEK FROM '2007-12-31') возвращает, как и WEEK('2007-12–31'), значение 52, а EXTRACT(DAY_MINUTE FROM '2007-12-31 12:30:00') возвращает значение 311230 (31 число, 12 часов и 30 минут).
   В следующем подразделе я расскажу о функциях, позволяющих выполнять арифметические операции с датами.

   Функции сложения и вычитания дат

   Рассмотрим функции, которые вы можете использовать для выполнения арифметических операций.
   • ADDDATE('<Дата или дата и время>',<Количество дней>) или ADDDATE('<Дата или дата и время>',<Временной интервал>). Функция возвращает дату или дату и время, сдвинутые относительно указанной даты на указанное количество дней или на указанный временной интервал. Для задания интервала можно использовать один из следующих основных форматов:
   • INTERVAL '<Количество секунд>' SECOND
   • INTERVAL '<Количество минут>' MINUTE
   • INTERVAL '<Количество часов>' HOUR
   • INTERVAL '<Количество дней>' DAY
   • INTERVAL '<Количество недель>' WEEK
   • INTERVAL '<Количество месяцев>' MONTH
   • INTERVAL '<Количество кварталов>' QUARTER
   • INTERVAL '<Количество лет>' YEAR
   • INTERVAL '<Количество минут>:<Количество секунд>' MINUTE_SECOND
   • INTERVAL '<Количество часов>:<Количество минут>:<Количество секунд>' HOUR_SECOND
   • INTERVAL '<Количество часов>:<Количество минут>' HOUR_MINUTE
   • INTERVAL '<Количество дней> <Количество часов>:<Количество минут>:<Количество секунд>' DAY SECOND
   • INTERVAL '<Количество дней> <Количество часов>:<Количество минут>' DAY_MINUTE
   • INTERVAL '<Количество дней> <Количество часов>' DAY_HOUR
   • INTERVAL '<Количество лет>-<Количество месяцев>' YEAR MONTH
   Например, функция ADDDATE('2007-12-12',28) добавляет 28 дней к 12 декабря 2007 г. и возвращает результат 2008-01-09, а функция ADDDATE('2007-12-12',INTERVAL '28 12:30' DAY_MINUTE) добавляет 28 дней, 12 часов и 30 минут к 12 декабря 2007 г. и возвращает результат 2008-01-09 12:30:00.
   • DATE_ADD('<Дата или дата и время>','<Временной интервал>').
   Синоним ADDDATE('<Дата или дата и время>','<Временной интервал>').
   • ADDTIME(<Время или дата и время>,<Добавляемое время>).
   Функция возвращает сумму своих аргументов. Например, функция ADDTIME ('2007-12-12 12:30:00','15:50:00') добавляет 15 часов 50 минут к 12 часам 30 минутам 12 декабря 2007 г. и возвращает результат 2007-12-13 04:20:00.
   • SUBDATE('<Дата или дата и время>',<Количество дней>) или SUBDATE('<Дата или дата и время>','<Временной интервал>').
   Функция SUBDATE() аналогична функции ADDDATE(), только указанное количество дней или указанный временной интервал не добавляются к дате, а вычитаются из нее, иными словами, дата сдвигается в прошлое, а не в будущее. Например, функция SUBDATE('2007-12-12',INTERVAL '28 12:30' DAY_MINUTE) вычитает 28 дней, 12 часов и 30 минут из 12 декабря 2007 г. и возвращает результат 2007-11-13 11:30:00.
   • DATE_SUB('<Дата или дата и время>','<Временной интервал>')
   Синоним SUBDATE('<Дата или дата и время>','<Временной интервал>').
   • SUBTIME(<Время или дата и время>,<Вычитаемое время>).
   Функция возвращает разность своих аргументов. Например, функция SUBTIME('2007-12-12 12:30:00','15:50:00') вычитает 15 часов 50 минут из 12 часов 30 минут 12 декабря 2007 г. и возвращает результат 2007-12-11 20:40:00.
   • DATEDIFF('<Дата или дата и время>','<Дата или дата и время>').
   Функция DATEDIFF() возвращает разность в днях между первой и второй датой (время при этом не учитывается). Если первая дата предшествует второй, результат будет отрицательным. Например, DATEDIFF('2007-12-12 12:30:00','2007-12-31') возвращает значение –19.
   • TIMEDIFF('<Время или дата и время>','<Время или дата и время>').
   Функция TIMEDIFF() возвращает разность своих аргументов в формате времени. Если первый момент предшествует второму, результат будет отрицательным. Например, функция TIMEDIFF('2007-12-12 12:30:00','2007-12-31 15:50:00') возвращает значение –459:20:00. Это означает, что 12 декабря 2007 г. 12 часов 30 минут отстоит в прошлое от 31 декабря 2007 г. 15 часов 50 минут на 459 часов 20 минут.
   • PERIOD_ADD(<Период в формате YYMM или YYYYMM>,<Количество месяцев>).
   Функция PERIOD_ADD() возвращает результат добавления к указанному периоду указанное количество месяцев. Обратите внимание, что оба аргумента этой функции – числа и возвращаемый результат – также число. Например, PERIOD_ADD(200712,3) возвращает значение 200803, поскольку через три месяца после декабря 2007 г наступит март 2008 г.
   • PERIOD_DIFF(<Период в формате YYMM или YYYYMM>,<Период в формате YYMM или YYYYMM>).
   Функция PERIOD_DIFF() возвращает разность в месяцах между первым и вторым периодом. Обратите внимание, что оба аргумента этой функции – числа. Например, PERIOD_DIFF(200712,200803) возвращает значение – 3.
   • TIMESTAMP('<Дата или дата время>','<Время>').
   Функция TIMESTAMP() возвращает сумму своих аргументов в формате даты и времени. Например, функция TIMESTAMP('2007-12-12 12:30','15:50') добавляет 15 часов 50 минут к 12 часам 30 минутам 12 декабря 2007г. и возвращает результат 2007-12-13 04:20:00.
   • TIMESTAMPADD(<Тип периода>,<Длина периода>,<Дата или дата и время>).
   Функция TIMESTAMPADD() возвращает дату или дату и время сдвинутые относительно указанной даты на указанный период. Первым аргументом является тип периода:
   DAY —число(номерднявмесяце;
   WEEK —номернеделивгоду
   MONTH —номермесяца
   QUARTER —номерквартала
   YEAR —номергода
   HOUR —часы
   MINUTE —минуты
   SECOND —секунды
   Вторым аргументом является целое число – длина периода, то есть количество единиц измерения, заданных первым параметром. Если длина периода меньше 0, дата, определяемая третьим параметром, будет сдвинута в прошлое.
   Например, функция TIMESTAMPADD(HOUR,15,'2007-12-12 12:30:00') добавляет15 часов к 12 часам 30 минутам 12 декабря 2007г. и возвращает результат 2007-12-13 03:30:00.
   • TIMESTAMPDIFF(<Тип периода>,<Дата или дата и время>,<Дата или дата и время>).
   Функция TIMESTAMPDIFF() возвращает количество указанных периодов, прошедших между первым и вторым моментом. Первый аргумент может приниматьте же значения, что и первый аргумент функции TIMESTAMPADD(). Если вторая дата предшествует первой, результат будет отрицательным. Например, TIMESTAMPDIFF(WEEK, 2007-12-12 12:30:00, 2007-12-31)возвращает значение 2, и это означает, что 12 декабря и 31 декабря 2007 г. разделяют две недели.
   В следующем подразделе мы рассмотрим функции, позволяющие переводить даты из одного формата в другой.
Чтение онлайн



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [17] 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Навигация по сайту


Читательские рекомендации

Информация