указанному формату. Формат может включать те из перечисленных выше параметров, которые предназначены для отображения часов, минут и секунд. Например, функция 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() преобразует число в