Изменение года в дате mysql
У меня есть куча дат в нашей базе данных, хранящихся в стандартном типе даты mysql.
Как я могу скрыть год до 2013 года, независимо от исходной даты.
Итак, если дата 2009-01-01, это будет 2013-01-01, но если это 2012-01-04, она будет конвертироваться в 2013-01-14.
Я понял, что это будет просто и очевидно, но я не мог понять это =/
5 ответов
Проблема с текущими ответами заключается в том, что ни один из них не учитывает високосный год. Если вы берете дату «2016-02-29» и конвертируете ее в 2013 год через конкатенацию, вы получаете «2013-02-29», что не является допустимой датой. Если вы запустите DATE_FORMAT (‘2013-02-29’, ‘% Y-% m-% d’), результат будет null . Пример:
Лучший способ изменить год — использовать DATE_ADD, поскольку он учитывает переход на летнее время. Например:
Вы можете заменить CURRENT_DATE() на «2013-01-01», если вы все еще хотите преобразовать все даты в 2013 году вместо текущего года. Пример этого решения:
Изменение год в дате в MySQL
У меня есть куча дат в нашей базе данных, хранящихся в стандартном типе даты mysql.
Как я могу скрыть год до 2013, независимо от первоначальной даты.
поэтому, если дата 2009-01-01, это будет 2013-01-01, но если это 2012-01-04, она будет преобразована в 2013-01-14.
Я подумал, что это будет просто и очевидно, но я не мог понять это=/
5 ответов
другой способ-объединить его,
проблема с текущими ответами заключается в том, что ни один из них не учитывает високосный год. Если вы возьмете дату «2016-02-29» и преобразуете ее в 2013 год через конкатенацию, вы получите «2013-02-29», которая не является действительной датой. Если вы запустите DATE_FORMAT (‘2013-02-29′,’ %Y-%m-%d’), результатом будет null . См. пример здесь:
лучший способ изменить год-использовать DATE_ADD, так как он учитывает дневной свет сбережения. Например:
вы можете заменить CURRENT_DATE () на «2013-01-01», если вы все еще хотите преобразовать все даты в 2013 вместо текущего года. Пример этого решения приведен здесь:
Microsoft SQL Server
Даты
Округление данных datetime. Дробные значения секунды. Точность datetime округляется до приращений .000, .003 или .007 секунд, как показано в следующей таблице.
Пользовательское значение | Системное сохраненное значение |
---|---|
01/01/98 23: 59: 59.999 | 1998-01-02 00: 00: 00.000 |
—— | —— |
01/01/98 23: 59: 59.995 | 1998-01-01 23: 59: 59.997 |
01/01/98 23: 59: 59.996 | |
01/01/98 23: 59: 59.997 | |
01/01/98 23: 59: 59.998 | |
—— | —— |
01/01/98 23: 59: 59.992 | 1998-01-01 23: 59: 59.993 |
01/01/98 23: 59: 59.993 | |
01/01/98 23: 59: 59.994 | |
—— | —— |
01/01/98 23: 59: 59.990 | 1998-01-01 23: 59: 59.990 |
01/01/98 23: 59: 59.991 | |
—— | —— |
Если требуется более высокая точность, следует использовать time , datetime2 или datetimeoffset .
Форматирование даты и времени с использованием CONVERT
Вы можете использовать функцию CONVERT для приведения типа данных datetime в форматированную строку.
Вы можете также использовать некоторые встроенные коды для преобразования в определенный формат. Вот варианты, встроенные в SQL Server:
@convert_code | Результат |
---|---|
100 | "21 июля 2016 7:56 утра" |
101 | "07/21/2016" |
102 | "2016.07.21" |
103 | "21/07/2016" |
104 | "21.07.2016" |
105 | "21-07-2016" |
106 | «21 июля 2016 года» |
107 | «21 июля 2016 года» |
108 | «7:57:05» |
109 | "21 июля 2016 7: 57: 45: 707AM" |
110 | "07-21-2016" |
111 | "2016/07/21" |
112 | "20160721" |
113 | "21 июля 2016 года 07: 57: 59: 553" |
114 | "07: 57: 59: 553" |
120 | «2016-07-21 07:57:59» |
121 | "2016-07-21 07: 57: 59.553" |
126 | "2016-07-21T07: 58: 34,340" |
127 | "2016-07-21T07: 58: 34,340" |
130 | "16: 1437 7: 58: 34: 340AM" |
131 | "16/10/1437 7: 58: 34: 340AM" |
Форматирование даты и времени с использованием FORMAT
Вы можете использовать новую функцию: FORMAT() .
Используя это, вы можете преобразовать поля DATETIME в свой собственный формат VARCHAR .
пример
Понедельник, 5 сентября 2016 года 12:01:02
аргументы
Учитывая, что формат DATETIME отформатирован, 2016-09-05 00:01:02.333 , следующий график показывает, каков будет их вывод для предоставленного аргумента.
аргументация | Выход |
---|---|
гггг | 2016 |
уу | 16 |
MMMM | сентябрь |
М.М. | 09 |
M | 9 |
дддд | понедельник |
ддд | понедельник |
дд | 05 |
d | 5 |
HH | 00 |
ЧАС | 0 |
чч | 12 |
час | 12 |
мм | 01 |
м | 1 |
сс | 02 |
s | 2 |
тт | AM |
T | |
FFF | 333 |
Ф.Ф. | 33 |
е | 3 |
Вы также можете предоставить один аргумент функции FORMAT() для генерации предварительно форматированного вывода:
Понедельник, 5 сентября 2016 года 4:01:02
Одиночный аргумент | Выход |
---|---|
D | Понедельник, 5 сентября 2016 г. |
d | 9/5/2016 |
F | Понедельник, 5 сентября 2016 года 12:01:02 |
е | Понедельник, 5 сентября 2016 года 12:01 |
г | 5/5/2016 12:01:02 |
г | 5/5/2016 12:01 |
M | Сентябрь 05 |
О | 2016-09-05T00: 01: 02,3330000 |
р | Пн, 05 сен 2016 00:01:02 GMT |
s | 2016-09-05T00: 01: 02 |
T | 12:01:02 AM |
T | 12:01 |
U | Понедельник, 5 сентября 2016 года 4:01:02 |
U | 2016-09-05 00: 01: 02Z |
Y | Сентябрь 2016 года |
Примечание. В приведенном выше списке используется культура en-US . Для FORMAT() через третий параметр можно указать другую культуру:
Получить текущую дату
Встроенные функции GETDATE и GETUTCDATE возвращают текущую дату и время без смещения часового пояса.
Возвращаемое значение обеих функций основано на операционной системе компьютера, на котором запущен экземпляр SQL Server.
Возвращаемое значение GETDATE представляет текущее время в том же часовом поясе, что и операционная система. Возвращаемое значение GETUTCDATE представляет текущее время UTC.
Любая функция может быть включена в предложение SELECT запроса или как часть логического выражения в WHERE .
Есть еще несколько встроенных функций, которые возвращают разные варианты текущего времени:
DATEADD для добавления и вычитания периодов времени
Чтобы добавить меру времени, number должен быть положительным. Чтобы вычесть значение времени, number должно быть отрицательным.
ПРИМЕЧАНИЕ. DATEADD также принимает аббревиатуры в параметре datepart . Использование этих сокращений обычно обескураживается, поскольку они могут вводить в заблуждение ( m vs mi , ww vs w и т. Д.).
Ссылка на детали даты
Это значения datepart доступные для функций даты и времени:
DatePart | Сокращения |
---|---|
год | yy, yyyy |
четверть | qq, q |
месяц | мм, м |
DayOfYear | dy, y |
день | dd, d |
неделю | wk, ww |
будний день | dw, w |
час | чч |
минут | mi, n |
второй | ss, s |
миллисекунды | Миз |
микросекунда | MCS |
наносекунда | нс |
ПРИМЕЧАНИЕ . Использование сокращений обычно обескураживается, поскольку они могут вводить в заблуждение ( m vs mi , ww vs w и т. Д.). Длинная версия представления datepart способствует ясности и удобочитаемости и должна использоваться по возможности ( month , minute , week , weekday и т. Д.).
DATEDIFF для расчета разницы во времени
Он вернет положительное число, если datetime_expr в прошлом datetime_expr2 к datetime_expr2 и отрицательное число в противном случае.
ПРИМЕЧАНИЕ. DATEDIFF также принимает аббревиатуры в параметре datepart . Использование этих сокращений обычно обескураживается, поскольку они могут вводить в заблуждение ( m vs mi , ww vs w и т. Д.).
DATEDIFF также может использоваться для определения смещения между UTC и локальным временем SQL Server. Следующий оператор можно использовать для расчета смещения между временем по Гринвичу и местным временем (включая часовой пояс).
DATEPART & DATENAME
DATEPART возвращает указанное число datepart указанного выражения datetime как числовое значение.
DATENAME возвращает строку символов, которая представляет заданную datepart в определенную дату. На практике DATENAME в основном полезен для получения названия месяца или дня недели.
Существуют также некоторые сокращенные функции для получения года, месяца или дня выражения datetime, которые ведут себя как DATEPART с их соответствующими единицами datepart .
ПРИМЕЧАНИЕ. DATEPART и DATENAME также принимают аббревиатуры в параметре datepart . Использование этих сокращений обычно обескураживается, поскольку они могут вводить в заблуждение ( m vs mi , ww vs w и т. Д.).
Получение последнего дня месяца
Используя функции DATEADD и DATEDIFF , можно вернуть последнюю дату месяца.
Функция EOMONTH обеспечивает более сжатый способ возврата последней даты месяца и имеет необязательный параметр для смещения месяца.
Вернуть только дату из DateTime
Существует много способов вернуть дату из объекта DateTime
- SELECT CONVERT(Date, GETDATE())
- SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) возвращается 2016-07-21 00: 00: 00.000
- SELECT CAST(GETDATE() AS DATE)
- SELECT CONVERT(CHAR(10),GETDATE(),111)
- SELECT FORMAT(GETDATE(), 'yyyy-MM-dd')
Обратите внимание, что опции 4 и 5 возвращают строку, а не дату.
Создать функцию для расчета возраста человека на определенную дату
Эта функция будет принимать 2 параметра datetime, DOB и дату для проверки возраста на
например, чтобы проверить возраст сегодня кого-то, родившегося 1 / 1/2000
ОБЪЕКТ ПРОГРАММЫ CROSS PLATFORM
В Transact SQL вы можете определить объект как Date (или DateTime ), используя [DATEFROMPARTS][1] (или [DATETIMEFROMPARTS][1] ), например, следующую:
Параметры, которые вы предоставляете: Год, Месяц, День для функции DATEFROMPARTS а для функции DATETIMEFROMPARTS вам необходимо DATEFROMPARTS год, месяц, день, час, минуты, секунды и миллисекунды.
Эти методы полезны и заслуживают внимания, потому что использование простой строки для создания даты (или даты и времени) может привести к сбою в зависимости от настроек региона, местоположения или формата файла главной машины.
SQL — урок 2: Работа с датой и временем
Литералы служат для непосредственного представления данных, ниже приведен список
стандартных литерал:
- целочисленные — 0, -34, 45;
- вещественные — 0.0, -3.14, 3.23e-23;
- строковые — ‘текст’, n’текст’, ‘don»t!’;
- дата — DATE ‘2008-01-10’;
- время — TIME ’15:12:56′;
- временная отметка — TIMESTAMP ‘2008-02-14 13:32:02’;
- логический тип — true, false;
- пустое значение — null.
Двойной апостроф интерпретируется в строковой литерале как апостроф в тексте.
В MySQL для временных литерал строка должна быть заключена в скобки: DATE (‘2008-01-10’).
Формат даты по умолчанию обычно определяется настройкой БД. Продвинутые СУБД могут
автоматически определять некоторые форматы (DATE (‘2008.01.10’))
или как в Oracle имеют функцию преобразования (to_date(‘01.02.2003′,’dd.mm.yyyy’)).
Для упрощения во многих СУБД там, где подразумевается дата,
перед строкой необязательно ставить имя типа.
Интервал времени
Синтаксис и реализация интервалов отличается на разных СУБД.
Oracle
Данный тип разделен на два: интервал по годам и интервал по дням.
В первом случае можно указать точность интервала только до месяца (по умолчанию год).
Во втором случае до различных долей секунды. Кроме этого указывается точность значения
временных промежутков в количестве цифр. Если точность не совпадает, то выводится сообщение
об ошибке.
PostgreSQL
интервалы указываются в виде строки, в которой перечисляются значение и тип промежутка:
- microsecond — микросекунды;
- millisecond — милисекунды;
- second — секунды;
- minute — минуты;
- hour — часы;
- day — дни;
- week — недели;
- month — месяцы;
- year — года;
- century — век;
- millennium — тысячелетие.
Слова можно употреблять и во множественном числе.
Если интервал начинается с дней, то можно использовать короткий формат строки как
в Oracle для дневных интервалов.
MySQL
Только сложные интервалы, состоящие из более одного типа промежутков, указываются в строке.
Для этих целей введены дополнительные по сравнению с PostgreSQL имена для промежутков:
- second_microsecond — секунды и микросекунды, формат строки ‘s.m’;
- minute_microsecond — минуты и микросекунды, формат строки ‘m.m’;
- minute_second — минуты и секунды, формат строки ‘m:s’;
- hour_microsecond — часы и микросекунды, формат строки ‘h.m’;
- hour_second — часы, минуты и секунды, формат строки ‘h:m:s’;
- hour_minute — часы и минуты, формат строки ‘h:m’;
- day_microsecond — день и микросекунды, формат строки ‘d.m’;
- day_second — дни, часы, минуты и секунды, формат строки ‘d h:m:s’;
- day_minute — дни, часы и минуты, формат строки ‘d h:m’;
- day_hour — дни и часы, формат строки ‘d h’;
- year_month — года и месяцы, формат строки ‘y-m’.
MySQL интервалы используются в выражениях с временными типами данных,
использовать их в качестве конечного типа для столбцов запрещено.
Выражения и операции
Для построения выражений SQL включает стандартные операции, ряд дополнительных предикатов
(булевских конструкций) и функций. В MySQL для встроенных функций между именем и открывающей
скобкой не должно быть пробелов, иначе будет сообщение об отсутствии подобной функции в БД.
Oracle не поддерживает логические выражения в перечислении select.
cтроковые операции
|| — соединение строк, в некоторых СУБД операнды автоматически преобразуются в
строковый тип. В MS Access используется &
алгебраические операции
- + — сложение;
- — — вычитание;
- * — умножение;
- / — деление;
- mod — остаток от деления. Oracle: mod(6,2). MySql: 6 mod 2.
Операции + и — также используются при работе со временем и интервалами.
В Oracle и PostgreSQL возможна разница между датами.
Результат возвращается в виде интервала в днях. Ниже приведен пример добавления к дате
интервала.
Ко времени можно прибавлять целое число, но результат зависит от конкретной СУБД.
операции отношения
- < — меньше;
- <= — меньше либо равно;
- > — больше;
- >= — больше либо равно;
- = — равно;
- <>,!= — не равно;
логические операции и предикаты
- and — логическое и;
- or — логическое или;
- nor — отрицание;
- between — определяет, находится ли значение в указанном диапазоне:
выражение IN (значение1. значениеn)
В качестве множества значений может служить корректная выборка
условные выражения
- case — условный оператор, имеющий следующий синтаксис:
- decode(expr,s1,r1[,sn,rn][,defr]) — сравнивает выражение expr с каждым выражением si
из списка. Если выражения равны то возвращается значение равное ri. Если ни одно
из выражений в списке не равно expr, то возвращается defr или NULL, если defr не было указано.
Эта функция доступна только в Oracle и в большинстве случае заменяет оператор CASE; - coalesce(arg1,…,argn) — возвращает первый аргумент в списке не равный null. Для двух
аргументов в Oracle можно воспользоваться функцией nvl; - greatest(arg1,…,argn) — возвращает наибольший аргумент в списке;
- least(arg1,…,argn) — возвращает наименьший аргумент в списке;
- nullif((arg1,arg2) — возвращает null если два аргумента равны, иначе первый
аргумент.
Ниже приведен пример использования выражения в запросе выбора данных.
прочие операции
В каждой СУБД свой набор операций, выше были приведены наиболее употребительные.
Например, в PosgreSQL можно использовать и такие операции:
- ^ — возведение в степень;
- |/ — квадратный корень;
- ||/ — кубический корень;
- ! — постфиксный факториал;
- !! — префиксный факториал;
- @ — абсолютное значение.
Обзор функций
В арсенале каждой СУБД обязательно имеется набор встроенных функций для
обработки стандартных типов данных. В MySQL для встроенных функций между именем и
открывающей скобкой не должно быть пробелов, иначе будет сообщение об отсутствии подобной
функции в БД. В некоторых СУБД, как Oracle, если функция не имеет аргументов,
то скобки можно опустить.
математические функции
- abs(x) — абсолютное значение;
- ceil(x) — наименьшее целое, которое не меньше аргумента;
- exp(x) — экспонента;
- floor(x) — наибольшее целое, которое не больше аргумента;
- ln(x) — натуральный логарифм;
- power(x, y) — возводит x в степень y;
- round(x [,y]) — округление x до y разрядов справа от десятичной точки. По умолчанию
y равно 0; - sign(x) — возвращает -1 для отрицательных значений x и 1 для положительных;
- sqrt(x) — квадратный корень;
- trunc(x [,y]) — усекает x до у десятичных разрядов. Если у равно 0
(значение по умолчанию), то х усекается до целого числа. Если у меньше 0, от отбрасываются
цифры слева от десятичной точки.
Тригонометрические функции работают с радианами:
- acos(x) — арккосинус;
- asin(x) — арксинус;
- atan(x) — арктангенс;
- cos(x) — косинус;
- sin(x) — синус;
- tan(x) — тангенс.
строковые функции
- ascii(string) — возвращает код первого символа, эта функция обратна функции CHR;
- chr(x) — возвращает символ с номером х, в MySQL это функция char;
- length(string) — возвращает длину строки;
- lower(string) — понижает регистр букв;
- upper(string) — повышает регистр букв;
- ltrim(string1[, string2]) — удаляет слева из первой строки все символы
встречающиеся во второй строке. Если вторая строка отсутствует, то удаляются пробелы. В MySQL
второй аргумент не поддерживается; - rtrim(string1[, string2]) — аналогична функции ltrim, только удаление
происходит справа; - trim(string) — удаляет пробелы с обоих концов строки;
- lpad(string1, n[, string2]) — дополняет первую строку слева n символами из
второй строки, при необходимости вторая строка дублируется. Если string2 не указана, то
используется пробел; - rpad(string1, n[, string2]) — аналогична функции lpad, только присоединение
происходит справа; - replace(string1, c1, c2) — заменяет все вхождения символа/подстроки c1 на c2.
Для простого удаления всех вхождений c1, в качестве третьего аргумента надо указать пустую
строку (»). В Oracle третий аргумент не обязателен, и по умолчанию равен пустой строке; - instr(string1, string2[, a][, b]) — возвращает b вхождение строки string2
в строке string1 начиная с позиции a. Если a отрицательно, то поиск происходит справа. По
умолчанию a и b присваиваются значение 1. В MySQL последние два аргумента не поддерживаются. В
PostgreSQL данной функции нет, однако ее реализация дана в документации, как раз для
совместимости с Oracle; - substr(string, pos, len) — возвращает подстрку с позиции pos и длины len.
работа с датами
В рассматриваемых СУБД для обработки времени мало общего. Самый минимум у Oraсle:
- current_date — глобальная переменная содержащая текущую дату. Можно использовать и в других СУБД;
- trunc(d,s) — приводит дату к началу указанной временной отметки, например к началу месяца.
В PostgreSQL есть аналогичная функция date_trunc(s,d). В MySQL для этих целей может
использоваться функция date_format(d,s), но она возвращает результат в виде строки; - add_months(d,n) — добавляет к дате указанное число месяцев;
- last_day(d) — последний день месяца, содержащегося в аргументе;
- months_between(d1,d2) — возвращает число месяцев между датами.
Ниже приведены допустимые форматы в строковом параметре s для функций trunc и date_trunc соответственно:
- квартал — q, quarter;
- год — yyyy, year;
- месяц — mm, month;
- неделя — ww, week;
- день — dd, day;
- час — hh, hour;
- минута — mi, minute.
Такие функции как last_day в других СУБД реализуются с помощью арифметики времени и преобразования типов.
Так что при желании можно написать соответствующую функцию. Ниже приведена выборка последнего дня указанной даты.
Преобразование типов
Множество типов разрешенные для преобразования в констркуции CAST AS определяется
реализацией СУБД. Так в MySQL может преобразовать только следующие типы: binary[(n)],
char[(n)], date, datetime, decimal[(m[,d])], signed [integer], time, unsigned [integer].
А в Oracle, кроме преобразования встроенных типов, можно преобразовывать выборки со
множеством записей в массивы.
В PostgreSQL более расширенные возможности по преобразованию. Во-первых, можно добавить
собственное преобразование для встроенных и пользовательских типов. Во-вторых, есть
собственный более удобный оператор преобразования типов .
В большинстве случае необходимо преобразование в строку либо из строки. Для этого случаяСУБД предоставляют дополнительные функции.
функции Oracle
- to_char(date [,format[,nlsparams]]) — дату в строку;
- to_char(number [,format[,nlsparams]]) — число в строку;
- to_date(string[,format[,nlsparams]]) — строку в дату;
- to_number( string [ ,format[, nlsparams] ]) — строку в число;
- to_timestamp(string, format) — строку во время.
В этих функциях format описание формата даты или числа, а nlsparams — национальные
параметры. Формат строки для даты задается следующими элементами:
- «» — вставляет указанный в ковычках текст;
- AD, A.D. — вставляет AD с точками или без точек;
- ВС, B.C. — вставляет ВС с точками или без точек;
- СС, SCC — вставляет век, SCC возвращает даты ВС как отрицательные числа;
- D — вставляет день недели;
- DAY — вставляет имя дня, дополненное пробелами до длины в девять символов;
- DD — вставляет день месяца;
- DDD — вставляет день года;
- DY1 — вставляет сокращенное название дня;
- FF2 — вставляет доли секунд вне зависимости от системы счисления;
- НН, НН12 — вставляет час дня (от 1 до 12);
- НН24 — вставляет час дня (от 0 до 23);
- MI — вставляет минуты;
- MM — вставляет номер месяца;
- MOMn — вставляет сокращенное название месяца;
- MONTHn — вставляет название месяца, дополненное пробелами до девяти символов;
- RM — вставляет месяц римскими цифрами;
- RR — вставляет две последние цифры года;
- RRRR — вставляет весь год;
- SS — вставляет секунды;
- SSSSS — вставляет число секунд с полуночи;
- WW — вставляет номер недели года (неделя — 7 дней от первого числа, а не от понедельника до воскресенья);
- W — вставляет номер недели месяца;
- Y.YYY — вставляет год с запятой в указанной позиции;
- YEAR, SYEAR — вставляет год, SYEAR возвращает даты ВС как отрицательные числа;
- YYYY, SYYYY — вставляет год из четырех цифр, SYYYY возвращает даты ВС как отрицательные числа;
- YYY, YY, Y — вставляет соответствующее число последних цифр года.
Формат числовой строки задается следующими элементами:
- $ — вставляет знак доллара перед числом;
- В — вставляет пробелы для целой части десятичного числа, если она равна нулю;
- MI — вставляет знак минус в конце (например, ‘999.999mi’);
- S — вставляет знак числа в начале или в конце (например,’s9999′ или ‘9999s’);
- PR — записывает отрицательное число в уголвых скобках (например,’999.999pr’);
- D — вставляет разделитель десятичной точки в указанной позиции (например, ‘999D999’);
- G — вставляет групповой разделитель в указанной позиции (например,’9G999G999′). При этом дробная часть числа отбрасывается;
- С — вставляет ISO идентификатор валюты в начале или в конце числа (например, ‘с9999’ или ‘9999с’);
- L — вставляет локальный символ валюты в в начале или в конце числа (например, ‘l9999’ или ‘9999l’);
- , — вставляет запятую в указанной позиции вне зависимости от группового разделителя;
- . — вставляет десятичную точку в указанной позиции вне зависимости от разделителя десятичной точки;
- V — возвращает значение, умноженное на 10^n, где n равно числу девяток после V. В случае необходимости это значение округляется;
- ЕЕЕЕ — 9.99ЕЕЕЕ возвращает значение в экспоненциальной форме записи;
- RM — RM значение будет записано римскими цифрами в верхнем регистре;
- rm — rm значение будет записано римскими цифрами в нижнем регистре;
- 0 — вставляет нули, вместо пробелов в начале строки или в конце, например,
9990 вставляет нули, вместо пробелов в конце строки; - 9 — каждая 9 определяет значащую цифру.
функции PostgreSQL
- to_char(timestamp, format) — время в строку;
- to_char(interval, format) — интервал времени в строку;
- to_char(number, format) — число в строку;
- to_date(str, format) — строку в дату;
- to_number(str, format) — строку в число;
- to_timestamp(str, format) — строку во время.
Основные элементы форматирования совпадают с Oracle.
функции MySQL
При хранении даты в MySQL под типом Date (), она имеет формат 2011-07-11 (год-месяц-день). В некоторых случаях даже не имея разделителя 20110711.
Поскольку в русскоязычных странах более привычным к восприятию считается формат 11.07.2011 (день.месяц.год), то при выводе даты из базы данных, возникает необходимость в её преобразовании.
Преобразовать дату можно несколькими способами.
- при помощи php кода
- воспользовавшись командой DATE_FORMAT () при выборке из базы.
Первый способ применяется в тех случаях, когда необходимо вывести небольшое количество записей или же когда разработчик не подозревает о существовании второго способа.
Второй способ применим во всех случаях, вне зависимости сколько записей необходимо извлечь из базы, при этом он осуществляет минимальную нагрузку на сервер в отличии от способа с php кодом.
Рассмотрим пример выполнения:
Допустим существует таблица message , которая содержит ячейку send_data с датой в формате 2011-07-11 .
Для извлечения и преобразования даты напишем следующий код:
$message = mysql_fetch_array(mysql_query("SELECT DATE_FORMAT(send_data, '%e.%m.%Y') FROM message"));
Далее в том месте где необходимо вывести преобразованную дату, выводим массив $message любой, удобной для вас командой:
к примеру если в send_data находится 2011-05-03 то мы получим 03.05.2011 .
Номер индекса в массиве $message указываем каким по счету начиная от 0, в команде SELECT извлекается необходимое значение с преобразованной датой. К примеру при запросе:
$message = mysql_fetch_array(mysql_query("SELECT title, text, DATE_FORMAT(send_data, '%e.%m.%Y') FROM message"));
вывод даты будет осуществляться с индексом 2:
Преобразовать дату при помощи DATE_FORMAT() можно в любой вид и очередность при помощи подстановки ключей.
- date_format(date,format) — дату в строку;
- time_format(time,format) — время в строку;
- format(number,precision) — число в cтроку типа ‘#,###,###.##’,
где число знаков определяется вторым аргументом.
Ниже приведен список основных элементов форматирования для даты и времени: