Статьи

ФОРМАТ (Transact-SQL)

  1. Синтаксис
  2. аргументы
  3. Типы возврата
  4. Примеры
  5. D. ФОРМАТ с типами данных времени
  6. Смотрите также

ОТНОСИТСЯ К: ОТНОСИТСЯ К:   SQL Server   База данных SQL Azure   Хранилище данных SQL Azure   Параллельное хранилище данных   Возвращает значение, отформатированное с указанным форматом и необязательной культурой в SQL Server 2017 SQL Server База данных SQL Azure Хранилище данных SQL Azure Параллельное хранилище данных

Возвращает значение, отформатированное с указанным форматом и необязательной культурой в SQL Server 2017. Используйте функцию FORMAT для языкового форматирования значений даты / времени и чисел в виде строк. Для общих преобразований типов данных используйте CAST или CONVERT.

Соглашения о синтаксисе Transact-SQL Соглашения о синтаксисе Transact-SQL

Синтаксис

ФОРМАТ (значение, формат [, культура])

аргументы

значение
Выражение поддерживаемого типа данных для форматирования. Список допустимых типов см. В таблице в следующем разделе «Примечания».

формат
Шаблон формата nvarchar .

Аргумент формата должен содержать допустимую строку формата .NET Framework, либо в виде строки стандартного формата (например, «C» или «D»), либо в качестве шаблона пользовательских символов для дат и числовых значений (например, «MMMM»). ДД, гггг (дддд) "). Составное форматирование не поддерживается. Полное объяснение этих шаблонов форматирования приведено в документации .NET Framework по форматированию строк в целом, настраиваемым форматам даты и времени и настраиваемым числовым форматам. Хорошей отправной точкой является тема " Типы форматирования «.

культура
Необязательный аргумент nvarchar, указывающий культуру.

Если аргумент культуры не указан, используется язык текущего сеанса. Этот язык устанавливается либо неявно, либо явно с помощью инструкции SET LANGUAGE. культура принимает любую культуру, поддерживаемую .NET Framework, в качестве аргумента; он не ограничен языками, явно поддерживаемыми SQL Server. Если аргумент культуры недопустим, FORMAT вызывает ошибку.

Типы возврата

nvarchar или нуль

Длина возвращаемого значения определяется форматом .

FORMAT возвращает NULL для ошибок, отличных от недопустимой культуры . Например, NULL возвращается, если значение, указанное в формате , недопустимо.

Функция FORMAT является недетерминированной.

FORMAT опирается на наличие общеязыковой среды выполнения .NET Framework (CLR).

Эта функция не может быть удалена, поскольку она зависит от наличия CLR. Удаление функции, требующей CLR, может вызвать ошибку на удаленном сервере.

FORMAT опирается на правила форматирования CLR, которые предписывают, что двоеточия и точки должны быть экранированы. Поэтому, когда строка формата (второй параметр) содержит двоеточие или точку, двоеточие или точка должны быть экранированы обратной косой чертой, если входное значение (первый параметр) относится к типу данных времени . Увидеть D. ФОРМАТ с типами данных времени ,

В следующей таблице перечислены допустимые типы данных для аргумента значения вместе с эквивалентными типами сопоставления .NET Framework.

Тип категории .NET тип Числовой bigint Int64 Числовой int Int32 Числовой smallint Int16 Числовой tinyint Байт Числовое десятичное SqlDecimal Числовое числовое SqlDecimal Числовое число с плавающей запятой Двойное числовое вещественное число Единственное числовое smallmoney Десятичное число Числовое значение Десятичное число Дата и время дата DateTime Дата и время время TimeSpan Дата и время datetime DateTime Дата и время smalldatetime DateTime Дата и время datetime2 DateTime Дата и время datetimeoffset DateTimeOffset

Примеры

В следующем примере возвращается простая дата, отформатированная для разных культур.

DECLARE @d DATETIME = '10 / 01/2011 '; ВЫБРАТЬ ФОРМАТ (@d, 'd', 'en-US') AS 'Результат по английскому языку в США', FORMAT (@d, 'd', 'en-gb') AS 'Результат по английскому языку в Великобритании', FORMAT (@d , 'd', 'de-de') AS 'Результат по Германии', FORMAT (@d, 'd', 'zh-cn') AS 'Результат по упрощенному китайскому языку (КНР)'; ВЫБРАТЬ ФОРМАТ (@d, 'D', 'en-US') AS 'Результат по английскому в США', FORMAT (@d, 'D', 'en-gb') AS 'Результат по английскому в Великобритании', FORMAT (@d , 'D', 'de-de') AS 'Немецкий результат', FORMAT (@d, 'D', 'zh-cn') AS 'Китайский (упрощенный КНР) результат';

Вот набор результатов.

США Английский Результат Великобритания Английский Результат Немецкий Результат Упрощенный китайский (КНР) Результат ---------------- ------------------- ---------- ------------- --------------------------- ---------- 01.10.2011 01.10.2011 01.10.2011 2011/10/1 (затронут 1 строка) США Английский Результат Великобритания Английский Результат Немецкий Результат Китайский (упрощенный КНР) Результат ---------------------------- --------------------- -------- ----------------------------- ------------- -------------------------- Суббота, 1 октября 2011 г., 1 октября 2011 г., Самстаг, 1 октября 2011 г., 2011 г. 年 10 月 1 日 (1 строка (ы) пострадавших)

В следующем примере показано форматирование числовых значений путем указания пользовательского формата. В этом примере предполагается, что текущей датой является 27 сентября 2012 г. Для получения дополнительной информации об этих и других пользовательских форматах см. Пользовательские строки числового формата ,

ОБЪЯВИТЬ @d DATETIME = GETDATE (); ВЫБОР ФОРМАТА (@d, 'dd / MM / гггг', 'en-US') AS 'DateTime Result', FORMAT (123456789, '### - ## - ####') AS "Результат произвольного номера" ;

Вот набор результатов.

DateTime Result Пользовательский номер Результат -------------- -------------------- 27.09.2012 123-45-6789 ( 1 ряд (ы) затронут)

В следующем примере возвращается 5 строк из таблицы Sales.CurrencyRate в базе данных AdventureWorks2012. Столбец EndOfDateRate хранится в таблице как тип money . В этом примере столбец возвращается неформатированным, а затем форматируется с указанием формата чисел .NET, общего формата и типов валют. Для получения дополнительной информации об этих и других числовых форматах см. Строки стандартного числового формата ,

ВЫБЕРИТЕ ТОП (5) CurrencyRateID, EndOfDayRate, FORMAT (EndOfDayRate, 'N', 'en-us') AS 'Числовой формат', FORMAT (EndOfDayRate, 'G', 'en-us') AS 'Общий формат', FORMAT (EndOfDayRate, 'C', 'en-us') AS 'Формат валюты' ОТ Sales.CurrencyRate ORDER BY CurrencyRateID;

Вот набор результатов.

CurrencyRateID EndOfDayRate Числовой формат Общий формат Формат валюты -------------- ------------ -------------- - ------------ --------------- 1 1.0002 1.00 1.0002 $ 1.00 2 1.55 1.55 1.5500 $ 1.55 3 1.9419 1.94 1.9419 $ 1.94 4 1.4683 1.47 1.4683 $ 1.47 5 8.2784 8.28 8,2784 $ 8,28 (затронуто 5 строк)

Этот пример определяет немецкую культуру (де-де).

ВЫБЕРИТЕ ТОП (5) CurrencyRateID, EndOfDayRate, FORMAT (EndOfDayRate, 'N', 'de-de') AS 'Числовой формат', FORMAT (EndOfDayRate, 'G', 'de-de') AS 'Общий формат', FORMAT (EndOfDayRate, 'C', 'de-de') AS 'Формат валюты' ОТ Sales.CurrencyRate ORDER BY CurrencyRateID; CurrencyRateID EndOfDayRate Числовой формат Общий формат Формат валюты -------------- ------------ -------------- - ------------ --------------- 1 1.0002 1,00 1,0002 1,00 € 2 1,55 1,55 1,5500 1,55 € 3 1,9419 1,94 1,9419 1,94 € 4 1,4683 1,47 1,4683 1,47 € 5 8,2784 8,28 8,2784 8,28 € (затронуто 5 рядов)

D. ФОРМАТ с типами данных времени

FORMAT возвращает NULL в этих случаях, потому что. и: не сбежали.

ВЫБРАТЬ ФОРМАТ (приведен ('07: 35 'как время), N'hh.mm'); -> возвращает NULL SELECT FORMAT (приведение ('07: 35 'как время), N'hh: mm'); -> возвращает NULL

Формат возвращает отформатированную строку, потому что. и: сбежали.

ВЫБРАТЬ ФОРМАТ (приведен ('07: 35 'как время), N'hh \ .mm'); -> возвращает 07.35 ВЫБОР ФОРМАТА (приведение ('07: 35 'как время), N'hh \: мм'); -> возвращает 07:35

Формат возвращает отформатированное текущее время с указанием AM или PM

ВЫБРАТЬ ФОРМАТ (SYSDATETIME (), N'hh: mm tt '); - возвращается в 15:46 ВЫБРАТЬ ФОРМАТ (SYSDATETIME (), N'hh: mm t '); - возвращается 03:46 P

Формат возвращает указанное время, отображая AM

выберите FORMAT (CAST ('2018-01-01 01:00' AS), N'hh: mm tt ') - возвращает 01:00 AM выберите FORMAT (CAST (' 2018-01-01 01:00 'AS) datetime2), N'hh: mm t ') - возвращается 01:00 A

Формат возвращает указанное время, отображая PM

select FORMAT (CAST ('2018-01-01 14:00' AS datetime2), N'hh: mm tt ') - возвращает 2:00 PM выбрать FORMAT (CAST (' 2018-01-01 14:00 'AS) datetime2), N'hh: mm t ') - возвращает 02:00 P

Формат возвращает указанное время в 24-часовом формате.

выберите FORMAT (CAST ('2018-01-01 14:00' AS datetime2), N'HH: mm ') - возвращается 14:00

Смотрите также

CAST и CONVERT (Transact-SQL)
STR (Transact-SQL)
Строковые функции (Transact-SQL)

2011.11.19
Карта