Как заменить в дате год sql
Перейти к содержимому

Как заменить в дате год sql

  • автор:

Изменение года в дате 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 доступные для функций даты и времени:

https://amdy.su/wp-admin/options-general.php?page=ad-inserter.php#tab-8
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

  1. SELECT CONVERT(Date, GETDATE())
  2. SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) возвращается 2016-07-21 00: 00: 00.000
  3. SELECT CAST(GETDATE() AS DATE)
  4. SELECT CONVERT(CHAR(10),GETDATE(),111)
  5. 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 (день.месяц.год), то при выводе даты из базы данных, возникает необходимость в её преобразовании.

Преобразовать дату можно несколькими способами.

  1. при помощи php кода
  2. воспользовавшись командой 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троку типа ‘#,###,###.##’,
    где число знаков определяется вторым аргументом.

Ниже приведен список основных элементов форматирования для даты и времени:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *