Database
 sql >> база данни >  >> RDS >> Database

Как да форматирате дата в T-SQL

Проблем:

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

Тази функция приема три аргумента:

  1. Новият тип данни (в нашия пример NVARCHAR).
  2. Име на израз или колона, съдържащо датата за форматиране (в нашия пример, start_date колона).
  3. Незадължителен код на стил като цяло число. (В нашия пример стилът „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 или по-нова версия и искате да конвертирате дати/часове в низове, съдържащи форматираните дати/часове.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инкрементално натоварване в SSIS

  2. Как да създадете репликация на транзакции

  3. Бързо намиране на различни стойности

  4. Как да комбинирате резултатите от две заявки в SQL

  5. SQL не е равен на () оператор за начинаещи