А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я
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. Библиотека программиста" (страница 18)

   Функции преобразования форматов дат

   Для преобразования дат из одного формата в другой вы можете использовать следующие основные функции:
   • DATE_FORMAT('<Дата или дата и время>', '<Формат>').
   Функция DATE_FORMAT() возвращает строку, содержащую дату, преобразованную к указанному формату. Формат может включать следующие основные параметры:
   • %a – сокращенное наименование дня недели (Sun, Mon и т. д.). О том, как настроить вывод дат на русском языке («Пнд», «Втр» и т. д.), рассказывалось при описании функции DAYNAME().
   • %b – сокращенное наименование месяца (Jan, Feb и т. д.). О том, как настроить вывод дат на русском языке (Янв, Фев и т. д.), говорилось при описании функции DAYNAME().
   • %c – номер месяца (0-12).
   • %D – число (номер дня в месяце) с английским суффиксом (0th, 1st, 2nd, и т. д.).
   • %d – число месяца (00–31).
   • %e – число месяца (0-31).
   • %H – часы (00–23).
   • %h, %I – часы (01–12).
   • %i – минуты (0 0–5 9).
   • %j – номер дня в году (0 01-3 6 6).
   • %k – часы (0-23).
   • %l – часы (1-12).
   • %M – наименование месяца (January, February и т. д.). О том, как настроить вывод дат на русском языке (Января, Февраля и т. д.), говорилось при описании функции DAYNAME().
   • %m – номер месяца (00–12).
   • %p – AM (обозначение первой половины суток) или PM (обозначение второй половины суток).
   • %r – время в 12-часовом формате (HH:MM:SS AM или PM).
   • %S, %s – секунды (0 0–5 9).
   • %T – время в 24-часовом формате (HH:MM:SS).
   • %U – номер недели в году (0 0-53), первым днем недели считается воскресенье, первая неделя года – целиком находящаяся в этом году, для дней, предшествующих первой неделе, номер недели равен 0.
   • %u – номер недели в году (0 0-53), первым днем недели считается понедельник, первая неделя года – та, более трех дней которой находится в этом году, для дней, предшествующих первой неделе, номер недели равен 0.
   • %V – номер недели в году (01–53), первым днем недели считается воскресенье, первая неделя года – целиком находящаяся в этом году, для дней, предшествующих первой неделе, номер недели равен номеру последней недели в предыдущем году.
   • %v – номер недели в году (01–53), первым днем недели считается понедельник, первая неделя года – та, более трех дней которой находится в этом году, для дней, предшествующих первой неделе, номер недели равен номеру последней недели в предыдущем году.
   • %W – наименование дня недели (Sunday, Monday и т. д.). О том, как настроить вывод дат на русском языке (Понедельник, Вторник и т. д.), было сказано при описании функции DAYNAME().
   • %w – номер дня недели (0 – воскресенье, 1 – понедельник и т. д.).
   • %X – номер года, к которому относится текущая неделя (первым днем недели считается воскресенье, первая неделя года – целиком находящаяся в этом году, неделя, предшествующая первой неделе года, относится к предыдущему году), в формате YYYY.
   • %x – номер года, к которому относится текущая неделя (первым днем недели считается понедельник, первая неделя года – та, более трех дней которой находится в этом году, неделя, предшествующая первой неделе года, относится к предыдущему году), в формате YYYY.
   • %Y – номер года в формате YYYY.
   • %y – номер года в формате YY.
   • %% – знак процента.
   Например, функция DATE_FORMAT('2007-12-12 12:30:00', %e %M %Y г. %k часов %i минут') возвращает значение 12 December 2007 г. 12 часов 30 минут или 12 Декабря 2007 г. 12 часов 30 минут, в зависимости от установленного языка вывода дат.
   • TIME_FORMAT('<Время или дата и время>', '<Формат>').
   Функция TIME_FORMAT() возвращает время, преобразованное к указанному формату. Формат может включать те из перечисленных выше параметров, которые предназначены для отображения часов, минут и секунд. Например, функция TIME_FORMAT('2007-12-12 12:30:00', '%k часов %i минут') возвращает значение 12 часов 30 минут.
   • STR_TO_DATE('<Строка>', '<Формат>').
   Функция STR_TO_DATE() получает в качестве аргумента строку, содержащую дату и/или время, и строку формата, и возвращает дату и/или время, полученные из строки в соответствии с указанным форматом. Функции STR_TO_DATE() и DATE_FORMAT() взаимно обратны: если дата была преобразована в строку некоторого формата с помощью функции DATE_FORMAT(), то с помощью функции STR_TO_DATE(), указав тот же формат, можно получить исходную дату, и наоборот. Например, STR_TO_DATE('12 December 2007 г. 12 часов 30 минут','%e %M %Y г. %k часов %i минут') = STR_TO_DATE(DATE_FORMAT('2007-12-12 12:30:00','%e %M %Y г. %k часов %i минут'), '%e %M %Y г. %k часов %i минут') = 2007-12-12 12:30:00. Однако названия месяцев и дней недели на русском языке функция STR_TO_DATE() обрабатывает некорректно.
   • GET_FORMAT(<DATE, TIME или DATETIME>,<'EUR', 'ISO', 'JIS', 'USA' или 'INTERNAL'>).
   Функция GET_FORMAT() возвращает строку формата даты и/или времени, которую затем можно использовать в функции DATE_FORMAT(). Первый аргумент функции указывает, какой формат нужно получить: формат даты, времени или даты и времени. Второй аргумент задает стандарт, которому соответствует возвращаемый формат. Например, функция GET_FORMAT(DATETIME,'EUR') возвращает значение %Y-%m-%d %H.%i.%s».
   • MAKEDATE(<Номер года>,<Номер дня в году>).
   Функция MAKEDATE() получает в качестве аргументов номер года и номер дня в году и возвращает дату, соответствующую этому году и дню. Например, функция MAKEDATE(2007,346) возвращает значение 2007-12-12.
   • MAKETIME(<Часы>,<Минуты>,<Секунды>).
   Функция MAKETIME() получает в качестве аргументов час, минуту и секунду и возвращает соответствующее время. Например, функция MAKETIME(12,30,0) возвращает значение 12:30:00.
   • FROM_DAYS(<Количество дней>).
   Функция FROM_DAYS() получает в качестве аргумента количество дней от Р. Х. и возвращает дату, соответствующую этому дню. Например, функция FROM_DAYS(733387) возвращает значение 2007-12-12.
   • TO_DAYS(<Дата или дата и время>).
   Функция TO_DAYS() получает в качестве аргумента дату или дату и время и возвращает количество дней от Р. Х., соответствующее этой дате. Например, функция TO_DAYS('2007-12-12 12:30:00') возвращает значение 733387.
   • SEC_TO_TIME(<Количество секунд>).
   Функция SEC_TO_TIME() получает в качестве аргумента количество секунд и возвращает соответствующее количество часов, минут и секунд в формате времени. Например, функция SEC_TO_TIME(45000) возвращает значение 12:30:00.
   • TIME_TO_SEC(<Время или дата и время>).
   Функция TIME_TO_SEC() получает в качестве аргумента время или дату и время и возвращает количество секунд, соответствующее времени (дата при этом игнорируется). Например, функция TIME_TO_SEC('2007-12-12 12:30:00') возвращает значение 45 000.
   • FROM_UNIXTIME(<Unix-время>[,'<Формат>']).
   Функция FROM_UNIXTIME() получает в качестве аргумента Unix-время – количество секунд, прошедших с 1 января 1970 г., и возвращает соответствующую дату и время. Например, функция FROM_UNIXTIME(1197451800) возвращает значение 2007-12-12 12:30:00. При необходимости вы можете задать формат возвращаемой даты и/или времени, используя параметры, которые мы перечислили при описании функции DATE_FORMAT().
   • UNIX_TIMESTAMP(<Дата>).
   Если аргумент функции UNIX_TIMESTAMP() не задан, то она возвращает текущее Unix-время. Если задан аргумент – дата, дата и время либо число в формате YYYYMMDD, YYMMDD, YYYYMMDDHHMMSS или YYMMDDHHMMSS, то функция UNIX_TIMESTAMP() возвращает Unix-время, соответствующее указанной дате. Например, функция UNIX_TIMESTAMP(20071212123000) возвращает значение 1197451800.
   • TIMESTAMP('<Дата или дата время>').
   Если задан только один аргумент функции TIMESTAMP(), то она возвращает этот аргумент, преобразованный в формат даты и времени. Например, TIMESTAMP('2007-12-12') возвращает значение 2007-12-12 00:00:00.
   Итак, вы изучили функции, выполняющие операции с датами и временем. В следующем разделе мы рассмотрим некоторые функции, работающие с символьными значениями.

   3.5. Символьные функции

   Рассмотрим символьные функции, которые вы можете использовать в выражениях.
   • BIT_LENGTH('<Строка>').
   Функция BIT_LENGTH() возвращает длину строки в битах. Например, функция BIT_LENGTH('Крылов') возвращает значение 48 при использовании однобайтовой кодировки и значение 96 при использовании кодировки UTF-8.
   • CHAR_LENGTH('<Строка>'), CHARACTER_LENGTH('<Строка>').
   Возвращают количество символов в строке. Например, функция CHAR_LENGTH('Крылов') возвращает значение 6.
   • LENGTH('<Строка>'), OCTET_LENGTH('<Строка>').
   Возвращают длину строки (в байтах). Например, функция LENGTH('Крылов') возвращает значение 6 при использовании однобайтовой кодировки и значение 12 при использовании кодировки UTF-8.
   • CHAR(<Код 1>,<Код 2>,…,<Код N> [USING <Кодировка>]).
   Функция CHAR() получает в качестве аргументов коды символов и возвращает строку, состоящую из этих символов. При необходимости можно явно указать кодировку, сопоставляющую коды символам. Например, функции CHAR(53402,53632,53643,53435,53438,53426 USING utf8) и CHAR(138,224,235,171,174,162 USING cp866) возвращают значение Крылов.
   • ORD('<Строка>').
   Функция ORD() возвращает числовой код первого символа в строке. Например, функция ORD(CHAR(53402,53632,53643,53435,53438,53426 USING utf8)) возвращает значение 53402.
   • CONCAT('<Строка 1>','<Строка 2>',…, '<Строка N>').
   Функция CONCAT() возвращает результат объединения своих аргументов. Например, функция CONCAT('ООО “Кускус”','Петров','Крылов') возвращает значение ООО «Кускус»ПетровКрылов.
   • CONCAT_WS('Разделитель','<Строка 1>','<Строка 2>',…,'<Строка N>').
   Функция CONCAT_WS() возвращает результат объединения своих аргументов, при этом первый аргумент используется как разделитель. Например, функция CONCAT_WS(',','ООО “Кускус”','Петров','Крылов') возвращает значение ООО «Кускус»,Петров,Крылов.
   • REPEAT('<Строка>','Количество экземпляров, не менее 1').
   Функция REPEAT('<Строка>',<Количество экземпляров>) возвращает строку, в которую исходная строка входит указанное количество раз. Например, функция REPEAT('Трижды',3) возвращает значение ТриждыТриждыТрижды.
   • REVERSE('<Строка>').
   Функция REVERSE() возвращает строку, в которой символы исходной строки расположены в обратном порядке. Например, функция REVERSE('наоборот') возвращает значение торобоан.
   • SPACE(<Количество пробелов>).
   Функция SPACE() возвращает строку, состоящую из указанного количества пробелов. Например, функция SPACE(1) возвращает значение «.».
   • ELT(k,'<Строка 1>','<Строка 2>',…, '<Строка N>').
   Функция ELT() возвращает строку с порядковым номером k. Например, функция ELT(2,'ООО «Кускус»','Петров','Крылов') возвращает значение Петров.
   • FIELD('<Строка-образец>','<Строка 1>','<Строка 2>',…,'<Строка N>').
   Функция FIELD() возвращает порядковый номер строки, совпадающей с образцом, и 0, если ни одна из строк 1, 2, …, N не совпадает с образцом. Например, функция FIELD('Петров','ООО «Кускус»','Петров', 'Крылов') возвращает значение 2.
   • FIND_IN_SET('<Строка-образец>','<Строка-контейнер>').
   Функция FIND_IN_SET() получает в качестве аргумента строку-образец (эта строка не должна содержать запятых) и строку-контейнер вида <Подстрока 1>,<Подстрока 2>,…,<Подстрока N> и возвращает порядковый номер подстроки, совпадающей с образцом, и 0, если ни одна из подстрок 1, 2, …,N не совпадает с образцом или строка-контейнер пустая. Например, функция FIND_IN_SET('Петров','ООО «Кускус»,Петров,Крылов') возвращает значение 2.
   • EXPORT_SET(<Число>,'<Подстрока для бита 1>','<Подстрока для бита 0>'[,'<Разделитель>'[,<Количество бит>]]).
   Функция EXPORT_SET() преобразует число в строку, заменяя каждый бит (0 или 1) соответствующей подстрокой, и возвращает полученную строку. Биты рассматриваются в обратном порядке, то есть справа налево. При необходимости можно задать разделитель подстрок (если разделитель не задан, используется запятая), а также максимальное количество битов, которые будут обработаны (недостающие биты рассматриваются как нулевые, «лишние» биты игнорируются, а если количество битов не задано, используется значение 64). Например, функция EXPORT_SET(25,'Да','Нет',':',7) возвращает значение Да:Нет:Нет:Да:Да:Нет:Нет, поскольку 25 записывается в двоичной системе счисления как 11001.
   • MAKE_SET(<Число>,'<Подстрока 0>','<Подстрока 1>',…, '<Подстрока N>').
   Функция MAKE_SET() преобразует число в строку: подстрока с порядковым номером k добавляется в строку, если k-й бит равен 1. Биты рассматриваются в обратном порядке, то есть справа налево. Разделителем подстрок служит запятая. Например, функция MAKE_SET(6,'Я согласен получать новости компании','Я согласен участвовать в опросах','Я согласен участвовать в тестировании продукта') возвращает значение Я согласен участвовать в опросах, Я согласен участвовать в тестировании продукта, поскольку 6 записывается в двоичной системе счисления как 110.
   • INSERT('<Строка>',<Позиция>,<Длина подстроки>,'<Замещающая подстрока>').
   Функция INSERT() возвращает строку, в которой подстрока, начинающаяся с указанной позиции и состоящая из указанного количества символов, заменена заданной подстрокой. Например, функция INSERT('ООО “Кускус”',6,3,'Кискис') заменяет подстроку Кус строки ООО «Кускус» подстрокой Кискис и возвращает значение ООО «Кискискус».
   • REPLACE('<Строка>','<Замещаемая подстрока>','<Замещающая подстрока>').
   Функция REPLACE() возвращает строку, в которой вместо замещаемой подстроки подставлена замещающая. Например, функция REPLACE('Не имей сто рублей, а имей сто друзей','сто','тысячу') возвращает значение Не имей тысячу рублей, а имей тысячу друзей.
   • SUBSTR('<Строка>',<Позиция>[,<Длина>]), SUBSTRING('<Строка>',<Позиция>[,<Длина>]), SUBSTR('<Строка>' FROM <Позиция>[ FOR <Длина>]), SUBSTRING('<Строка>' FROM <Позиция>[ FOR <Длина>]).
   Возвращают подстроку исходной строки, начинающуюся с указанной позиции. При необходимости можно указать длину получаемой подстроки. Если номер позиции меньше 0, то позиция отсчитывается не от начала строки, а от конца.
   Например:
   – функция SUBSTR('Семь чудес света',6) возвращает значение чудес света;
   – функция SUBSTR('Семь чудес света',6,5) возвращает значение чудес;
   – функция SUBSTR('Семь чудес света',-5) возвращает значение света.
   • MID('<Строка>',<Позиция>,<Длина>).
   Синоним функции SUBSTRING('<Строка>',<Позиция>,<Длина>).
   • SUBSTRING_INDEX('<Строка>','<Подстрока>',<Порядковый номер вхождения>).
   Если заданный порядковый номер вхождения больше 0, то функция SUBSTRING_INDEX() находит в исходной строке вхождение указанной подстроки с этим порядковым номером (считая от начала строки) и возвращает часть исходной строки, предшествующую этому вхождению. Если же заданный порядковый номер вхождения меньше 0, то вхождения отсчитываются от конца строки и возвращается часть исходной строки, которая следует за этим вхождением. Например, функция SUBSTRING_INDEX('Семь чудес света',' ',2) возвращает значение Семь чудес (подстроку, предшествующую второму пробелу), а функция SUBSTRING_INDEX('Семь чудес света',' ',-2) возвращает значение чудес света (подстроку, следующую за вторым пробелом).
   • LEFT('<Строка>',<Длина подстроки>).
   Функция LEFT() возвращает начальную подстроку исходной строки, состоящую из указанного количества символов. Например, функция LEFT('Генератор',3) возвращает значение Ген.
   • RIGHT('<Строка>',<Длина подстроки>).
   Функция RIGHT() возвращает подстроку, состоящую из указанного количества последних символов исходной строки. Например, функция RIGHT('Генератор',3) возвращает значение тор.
   • LOCATE('<Подстрока>','<Строка>'[,<Позиция>]).
   Функция LOCATE() возвращает позицию, с которой начинается первое вхождение подстроки в строку, или 0, если строка не содержит такой подстроки. При необходимости можно указать позицию в исходной строке, начиная с которой нужно искать вхождение подстроки. Например, функция
   • LOCATE('сто','Не имей сто рублей, а имей сто друзей') возвращает значение 9, а функция LOCATE('сто','Не имей сто рублей, а имей сто друзей',20) возвращает значение 28. Регистр символов учитывается только в случае, если хотя бы одна из строк – байтовая (бинарная).
   • INSTR('<Строка>','<Подстрока>'), POSITION('<Подстрока>' IN'<Строка>').
   Синонимы функции LOCATE('<Подстрока>','<Строка>'). Обратите внимание, что порядок аргументов у функций INSTR и LOCATE разный.
   • LCASE('<Строка>'), LOWER('<Строка>').
   Возвращают строку, приведенную к нижнему регистру. Например, функция LCASE('Крылов') возвращает значение крылов.
   • UCASE('<Строка>'), UPPER('<Строка>').
   Возвращают строку, приведенную к верхнему регистру. Например, функция UCASE('Крылов') возвращает значение КРЫЛОВ.
   • LOAD_FILE('<Путь и имя файла>').
   Функция LOAD_FILE() получает в качестве аргумента полный путь и имя файла, расположенного на компьютере, где работает сервер MySQL, и возвращает в виде строки данные, содержащиеся в этом файле. В пути к файлу необходимо использовать прямую косую черту вместо принятой в Windows обратной косой черты.
   • LPAD('<Строка>',<Длина>,'<Символы заполнения>').
   Функция LPAD() возвращает строку указанной длины, полученную из исходной строки путем добавления символов заполнения в начале строки (в случае если количество символов в исходной строке меньше указанного) или отбрасывания «лишних» символов (в случае если количество символов в исходной строке больше указанного). Например, функция LPAD('Крылов',9,'+-') возвращает значение +–+Крылов, а функция LPAD('ООО “Кускус”',9,'+-') возвращает значение ООО «Куск.
   • RPAD('<Строка>',<Длина>,'<Символы заполнения>').
   Функция RPAD() аналогична функции LPAD(), только символы заполнения добавляются в конце строки. Например, функция RPAD('Крылов',9,'+-') возвращает значение Крылов+–+, а функция RPAD('ООО “Кускус”',9,'+-') возвращает значение ООО «Куск.
   • LTRIM('<Строка>').
   Функция LTRIM() возвращает строку, полученную из исходной путем удаления начальных пробелов. Например, функция LTRIM(' Крылов ') возвращает значение Крылов .
   • RTRIM('<Строка>').
   Функция RTRIM() возвращает строку, полученную из исходной путем удаления пробелов в конце строки. Например, функция RTRIM(' Крылов ') возвращает значение Крылов.
   • TRIM([[LEADING, TRAILING или BOTH] ['<Символы заполнения>']FROM ]'<Строка>').
   Функция TRIM('<Строка>') возвращает строку, полученную из исходной путем удаления начальных пробелов и пробелов в конце строки. Если необходимо удалить другой символ или последовательность символов, их нужно указать в параметре <Символы заполнения>. Если требуется удалить символы заполнения только в начале строки, укажем параметр LEADING, если только в конце – параметр TRAILING. Например, функция TRIM('+-' FROM '+-+Крылов-+-+-') возвращает значение +Крылов–.
   • FORMAT(<Число>,<Количество цифр после запятой>).
   Функция FORMAT() округляет число до заданного количества цифр после десятичного разделителя или, наоборот, дополняет число нулями справа до заданного количества цифр после десятичного разделителя, и возвращает это число в виде строки, используя запятую как разделитель тысяч. Например, функция FORMAT(12345.6789,2) возвращает строку 12,345.68.
   Итак, мы рассмотрели функции, оперирующие символьными значениями. Подведем теперь итоги третьей главы.
Чтение онлайн



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

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


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

Информация