Функция DATE_FORMAT
Функция DATE_FORMAT преобразует дату из формата год-месяц-день или формата год-месяц-день часы:минуты:секунды в другой удобный нам формат.
Синтаксис
SELECT DATE_FORMAT(дата, формат) FROM имя_таблицы WHERE условие
Команды
| Команда | Описание |
|---|---|
| %d | День месяца, число от 00 до 31 . |
| %e | День месяца, число от 0 до 31 . |
| %m | Месяц, число от 01 до 12 . |
| %c | Месяц, число от 1 до 12 . |
| %Y | Год, число, 4 цифры. |
| %y | Год, число, 2 цифры. |
| %j | День года, число от 001 до 366 . |
| %H | Час, число от 00 до 23 . |
| %k | Час, число от 0 до 23 . |
| %h | Час, число от 01 до 12 . |
| %I | Час, число от 01 до 12 . |
| %l | Час, число от 1 до 12 . |
| %i | Минуты, число от 00 до 59 . |
| %S | Секунды, число от 00 до 59 . |
| %s | Секунды, число от 00 до 59 . |
| %w | День недели (0 — воскресенье, 1 — понедельник). |
| %W | Название дня недели по-английски. |
| %a | Сокращенный день недели по-английски. |
| %M | Название месяца по-английски. |
| %b | Сокращенный месяц по-английски. |
| %D | День месяца с английским суффиксом (1st, 2nd, 3rd и т.д.). |
| %r | Время, 12 -часовой формат (hh:mm:ss [AP]M). |
| %T | Время, 24 -часовой формат (hh:mm:ss). |
| %p | AM или PM. |
| %U | Неделя, где воскресенье считается первым днем недели, число от 00 до 53 . |
| %u | Неделя, где понедельник считается первым днем недели, число от 00 до 53 . |
| %V | Неделя, где воскресенье считается первым днем недели, число от 01 до 53 . Используется с `%X’. |
| %v | Неделя, где понедельник считается первым днем недели, число от 01 до 53 . Используется с `%x’. |
| %X | Год для недели, где воскресенье считается первым днем недели, число, 4 цифры. Используется с ‘%V’ . |
| %x | Год для недели, где воскресенье считается первым днем недели, число, 4 разряда. Используется с ‘%v’ . |
| %% | Символ `%’. |
Таблицы для примеров
| id айди |
name имя |
date дата регистрации |
|---|---|---|
| 1 | user1 | 2010-03-01 12:01:02 |
| 2 | user2 | 2011-04-02 13:02:03 |
| 3 | user3 | 2012-05-03 14:03:04 |
Пример
В данном примере при выборке создается новое поле, в котором будет лежать дата в другом формате:
SELECT *, DATE_FORMAT(date, ‘%d.%m.%Y’) as new_date FROM employees
Результат выполнения кода:
| id айди |
name имя |
date дата регистрации |
new_date дата в новом формате |
|---|---|---|---|
| 1 | user1 | 2010-03-01 12:01:02 | 01.03.2010 |
| 2 | user2 | 2011-04-02 13:02:03 | 02.04.2011 |
| 3 | user3 | 2012-05-03 14:03:04 | 03.05.2012 |
Смотрите также
- функцию TIME_FORMAT ,
которая меняет формат вывода времени
SQL. Как привести дату в строку в нужный формат в SQL Server
На выходе получается дату в строковом виде в нужном формате.
Что еще посмотреть по SQL Server
Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом
Это быстрое внесение изменений
Это простой удобный интерфейс
адаптация под мобильные устройства. Про юзабилити платформы
Нужна бесплатная консультация?
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.
Как изменить формат даты в sql
Для изменения формата даты в SQL, можно использовать функцию преобразования даты — CONVERT() или функцию форматирования даты — FORMAT() . Обе функции могут быть использованы в различных СУБД SQL (например, в MySQL, PostgreSQL, SQL Server).
Вот пример использования этих функций:
SELECT CONVERT(varchar, GETDATE(), 103) AS 'DD/MM/YYYY'
В этом примере мы используем функцию CONVERT() , чтобы преобразовать текущую дату (используя функцию GETDATE() ) в формат даты ‘DD/MM/YYYY’. Цифры 103 являются кодом формата даты.
SELECT FORMAT(GETDATE(), 'dd/MM/yyyy') AS 'DD/MM/YYYY'
В этом примере мы используем функцию FORMAT() , чтобы отформатировать текущую дату (используя функцию GETDATE() ) в формат ‘dd/MM/yyyy’.
Обратите внимание, что формат даты может отличаться в зависимости от используемой СУБД SQL.
Как преобразовать дату в число sql
Когда мы присваиваем значение одного типа столбцу, который хранит данные другого типа, либо выполняем операции, которые вовлекают данные разных типов, SQL Server пытается выполнить преобразование и привести используемое значение к нужному типу. Но не все преобразования SQL Server может выполнить автоматически. SQL Server может выполнять неявные преобразования от типа с меньшим приоритетом к типу с большим приоритетом. Таблица приоритетов (чем выше, тем больший приоритет):
| datetime |
| smalldatetime |
| float |
| real |
| decimal |
| money |
| smallmoney |
| int |
| smallint |
| tinyint |
| bit |
| nvarchar |
| nchar |
| varchar |
| char |
То есть SQL Server автоматически может преобразовать число 100.0 (float) в дату и время (datetime).
В тех случаях, когда необходимо выполнить преобразования от типов с высшим приоритетом к типам с низшим приоритетом, то надо выполнять явное приведение типов. Для этого в T-SQL определены две функции: CONVERT и CAST .
Функция CAST преобразует выражение одного типа к другому. Она имеет следующую форму:
CAST(выражение AS тип_данных)
Для примера возьмем следующие таблицы:
CREATE TABLE Products ( Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Manufacturer NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL ); CREATE TABLE Customers ( Id INT IDENTITY PRIMARY KEY, FirstName NVARCHAR(30) NOT NULL ); CREATE TABLE Orders ( Id INT IDENTITY PRIMARY KEY, ProductId INT NOT NULL REFERENCES Products(Id) ON DELETE CASCADE, CustomerId INT NOT NULL REFERENCES Customers(Id) ON DELETE CASCADE, CreatedAt DATE NOT NULL, ProductCount INT DEFAULT 1, Price MONEY NOT NULL );
Например, при выводе информации о заказах преобразует числовое значение и дату в строку:
SELECT Id, CAST(CreatedAt AS nvarchar) + '; total: ' + CAST(Price * ProductCount AS nvarchar) FROM Orders
Convert
Большую часть преобразований охватывает функция CAST. Если же необходимо какое-то дополнительное форматирование, то можно использовать функцию CONVERT . Она имеет следующую форму:
CONVERT(тип_данных, выражение [, стиль])
Третий необязательный параметр задает стиль форматирования данных. Этот параметр представляет числовое значение, которое для разных типов данных имеет разную интерпретацию. Например, некоторые значения для форматирования дат и времени:
- 0 или 100 — формат даты «Mon dd yyyy hh:miAM/PM» (значение по умолчанию)
- 1 или 101 — формат даты «mm/dd/yyyy»
- 3 или 103 — формат даты «dd/mm/yyyy»
- 7 или 107 — формат даты «Mon dd, yyyy hh:miAM/PM»
- 8 или 108 — формат даты «hh:mi:ss»
- 10 или 110 — формат даты «mm-dd-yyyy»
- 14 или 114 — формат даты «hh:mi:ss:mmmm» (24-часовой формат времени)
Некоторые значения для форматирования данных типа money в строку:
- 0 — в дробной части числа остаются только две цифры (по умолчанию)
- 1 — в дробной части числа остаются только две цифры, а для разделения разрядов применяется запятая
- 2 — в дробной части числа остаются только четыре цифры
Например, выведем дату и стоимость заказов с форматированием:
SELECT CONVERT(nvarchar, CreatedAt, 3), CONVERT(nvarchar, Price * ProductCount, 1) FROM Orders

TRY_CONVERT
При использовании функций CAST и CONVERT SQL Server выбрасывает исключение, если данные нельзя привести к определенному типу. Например:
SELECT CONVERT(int, 'sql')
Чтобы избежать генерации исключения можно использовать функцию TRY_CONVERT . Ее использование аналогично функции CONVERT за тем исключением, что если выражение не удается преобразовать к нужному типу, то функция возвращает NULL:
SELECT TRY_CONVERT(int, 'sql') -- NULL SELECT TRY_CONVERT(int, '22') -- 22
Дополнительные функции
Кроме CAST, CONVERT, TRY_CONVERT есть еще ряд функций, которые могут использоваться для преобразования в ряд типов:
- STR(float [, length [,decimal]]) : преобразует число в строку. Второй параметр указывает на длину строки, а третий — сколько знаков в дробной части числа надо оставлять
- CHAR(int) : преобразует числовой код ASCII в символ. Нередко используется для тех ситуаций, когда необходим символ, который нельзя ввести с клавиатуры
- ASCII(char) : преобразует символ в числовой код ASCII
- NCHAR(int) : преобразует числовой код UNICODE в символ
- UNICODE(char) : преобразует символ в числовой код UNICODE
SELECT STR(123.4567, 6,2) -- 123.46 SELECT CHAR(219) -- Ы SELECT ASCII('Ы') -- 219 SELECT NCHAR(1067) -- Ы SELECT UNICODE('Ы') -- 1067
