Проблем:
Искате да покажете стойност за дата в друг формат в SQL Server.
Пример:
Нашата база данни има таблица с име company
с данни в колоните id (първичен ключ), име и начална_дата .
id | име | начална_дата |
---|---|---|
1 | Lisa Bank | 20.01.2019 |
2 | Кредитен финансов институт | 14.03.2018 |
3 | Уилямс Холдинг | 28.10.2019 |
За всяка компания нека преобразуваме началната им дата в нов формат „ГГГГ/ММ/ДД“, където ГГГГ е 4-цифрена година, MM е 2-цифрен месец, а DD е 2-цифрен ден.
Решение 1:
Ще използваме CONVERT()
функция. Ето заявката, която бихте написали:
SELECT CONVERT(NVARCHAR, start_date, 111 ) AS new_date FROM company;
Ето резултата:
name | начална_дата |
---|---|
Lisa Bank | 20.01.2019 |
Кредитен финансов институт | 14.03.2018 |
Уилямс Холдинг | 28.10.2019 |
Дискусия:
Използвайте CONVERT()
функция за промяна на формата на дата от дадена колона или израз.
Тази функция приема три аргумента:
- Новият тип данни (в нашия пример NVARCHAR).
- Име на израз или колона, съдържащо датата за форматиране (в нашия пример,
start_date
колона). - Незадължителен код на стил като цяло число. (В нашия пример стилът „111“ показва датата с помощта на наклонени черти за разделяне на частите.)
Таблицата по-долу представя най-популярните кодове за стил на дата:
код | описание |
---|---|
101 | 30.11.2019 г. |
102 | 30.11.2019 г. |
103 | 30/11/2019 |
104 | 30.11.2019 г. |
105 | 30-11-2019 |
110 | 30.11.2019 г. |
111 | 30.11.2019 |
Изчерпателен списък със стилове на форматиране може да бъде намерен в документацията на T-SQL.
Заявката по-горе промени формата на датата на Lisa Bank 2019-01-20 на низ, съдържащ датата „2019/01/20“.
Решение 2:
В SQL Server 2012 и по-нови версии можете да използвате FORMAT()
функция за промяна на форматите за дата/час. Използвате символите по-долу, за да посочите желания формат:
шаблон | описание |
---|---|
dd | ден в диапазона 01-31 |
MM | месец в диапазона 01-12 |
yy | 2-цифрена година |
гггг | 4-цифрена година |
HH | час в диапазона 00-23 |
mm | минути в диапазона 00-59 |
ss | секунди в диапазона 00-59 |
Ето заявката, която бихте написали с FORMAT():
SELECT FORMAT(start_date, ‘yyyy-MM-dd’ ) AS new_date FROM company;
Първият аргумент е стойността на датата/датата/часа за преформатиране. Вторият е низ, съдържащ шаблона на новия формат. Тази функция връща тип данни NVARCHAR. Използвайте FORMAT()
ако работите на SQL Server 2012 или по-нова версия и искате да конвертирате дати/часове в низове, съдържащи форматираните дати/часове.