Разное

Ms sql date format: Format SQL Server Dates with FORMAT Function

Содержание

MS SQL Server: Формат даты

     Для вывода даты в формате DD.MM.YYYY

SomeDate = CONVERT(VarChar(50), getdate(), 104)

   Выведется текущая дата в указанном формате. Формат указывается цифрами, в данном случае 104. 

      Остальные значения:

SELECT CONVERT(varchar, getdate(), 2)    — ‘yy.mm.dd’
SELECT CONVERT(varchar, getdate(), 3)    — ‘dd/mm/yy’
SELECT CONVERT(varchar, getdate(), 4)    — ‘dd.mm.yy’
SELECT CONVERT(varchar, getdate(), 5)    — ‘dd-mm-yy’
SELECT CONVERT(varchar, getdate(), 6)    — ‘dd mmm yy’
SELECT CONVERT(VarChar, GETDATE(), 101)  — ‘mm/dd/yyyy’
SELECT CONVERT(VarChar, GETDATE(), 102)  — ‘yyyy.mm.dd’
SELECT CONVERT(VarChar, GETDATE(), 103)  — ‘dd/mm/yyyy’
SELECT CONVERT(VarChar, GETDATE(), 104)  — ‘dd.mm.yyyy’
SELECT CONVERT(varchar, GETDATE(), 105)  — ‘dd-mm-yyy’
SELECT CONVERT(varchar, GETDATE(), 111)  — ‘yyyy/mm/dd’
SELECT CONVERT(varchar, GETDATE(), 112)  — ‘yyyymmdd’

SELECT CONVERT(varchar,GETDATE(),108) ‘hh:mm:ss’
SELECT CONVERT(varchar,GETDATE(),114) ‘hh:mm:ss:mmm’
SELECT CONVERT(varchar,GETDATE(),113) ‘dd Mmm yyyy hh:mm:ss:mmm’
SELECT CONVERT(VarChar(50), GETDATE(), 100) ‘mmm dd yyyy mm:ss AM’

 
     и еще: 

SELECT CONVERT(varchar,GETDATE(),0)
Return Value = Jun 6 2007 11:07PM
SELECT CONVERT(varchar,GETDATE(),100)
Return Value = Jun 6 2007 11:07PM

SELECT CONVERT(varchar,GETDATE(),1)
Return Value = 06/06/07
SELECT CONVERT(varchar,GETDATE(),101)
Return Value = 06/06/2007

SELECT CONVERT(varchar,GETDATE(),2)
Return Value = 07. 06.06
SELECT CONVERT(varchar,GETDATE(),102)
Return Value = 2007.06.06

SELECT CONVERT(varchar,GETDATE(),3)
Return Value = 06/06/07
SELECT CONVERT(varchar,GETDATE(),103)
Return Value = 06/06/2007

SELECT CONVERT(varchar,GETDATE(),4)
Return Value = 06.06.07
SELECT CONVERT(varchar,GETDATE(),104)
Return Value = 06.06.2007

SELECT CONVERT(varchar,GETDATE(),5)
Return Value = 06-06-07
SELECT CONVERT(varchar,GETDATE(),105)
Return Value = 06-06-2007

SELECT CONVERT(varchar,GETDATE(),6)
Return Value = 06 Jun 07
SELECT CONVERT(varchar,GETDATE(),106)
Return Value = 06 Jun 2007

SELECT CONVERT(varchar,GETDATE(),7)
Return Value = Jun 06, 07
SELECT CONVERT(varchar,GETDATE(),107)
Return Value = Jun 06, 2007

SELECT CONVERT(varchar,GETDATE(),8)
Return Value = 23:38:49
SELECT CONVERT(varchar,GETDATE(),108)
Return Value = 23:38:49

SELECT CONVERT(varchar,GETDATE(),9)
Return Value = Jun 6 2007 11:39:17:060PM
SELECT CONVERT(varchar,GETDATE(),109)
Return Value = Jun 6 2007 11:39:17:060PM

SELECT CONVERT(varchar,GETDATE(),10)
Return Value = 06-06-07
SELECT CONVERT(varchar,GETDATE(),110)
Return Value = 06-06-2007

SELECT CONVERT(varchar,GETDATE(),11)
Return Value = 07/06/06
SELECT CONVERT(varchar,GETDATE(),111)
Return Value = 2007/06/06

SELECT CONVERT(varchar,GETDATE(),12)
Return Value = 070606
SELECT CONVERT(varchar,GETDATE(),112)
Return Value = 20070606

SELECT CONVERT(varchar,GETDATE(),13)
Return Value = 06 Jun 2007 23:40:14:577
SELECT CONVERT(varchar,GETDATE(),113)
Return Value = 06 Jun 2007 23:40:14:577

SELECT CONVERT(varchar,GETDATE(),14)
Return Value = 23:40:29:717
SELECT CONVERT(varchar,GETDATE(),114)
Return Value = 23:40:29:717

SELECT CONVERT(varchar,GETDATE(),20)
Return Value = 2007-06-06 23:40:51
SELECT CONVERT(varchar,GETDATE(),120)
Return Value = 2007-06-06 23:40:51

SELECT CONVERT(varchar,GETDATE(),21)
Return Value = 2007-06-06 23:41:10. 153
SELECT CONVERT(varchar,GETDATE(),121)
Return Value = 2007-06-06 23:41:10.153

SELECT CONVERT(varchar,GETDATE(),126)
Return Value = 2007-06-06T23:41:10.153

SELECT CONVERT(varchar,GETDATE(),131)
Return Value = 21/05/1428 11:41:10:153PM

 

Ms sql convert date format

Когда мы присваиваем значение одного одного типа столбцу, который хранит данные другого типа, либо выполняем операции, которые вовлекают данные разных типов, 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 преобразует выражение одного типа к другому. Она имеет следующую форму:

Для примера возьмем следующие таблицы:

Например, при выводе информации о заказах преобразует числовое значение и дату в строку:

Convert

Большую часть преобразований охватывает функция CAST. Если же необходимо какое-то дополнительное форматирование, то можно использовать функцию 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 – в дробной части числа остаются только четыре цифры

Например, выведем дату и стоимость заказов с форматированием:

TRY_CONVERT

При использовании функций CAST и CONVERT SQL Server выбрасывает исключение, если данные нельзя привести к определенному типу. Например:

Чтобы избежать генерации исключения можно использовать функцию TRY_CONVERT . Ее использование аналогично функции CONVERT за тем исключением, что если выражение не удается преобразовать к нужному типу, то функция возвращает NULL:

Дополнительные функции

Кроме CAST, CONVERT, TRY_CONVERT есть еще ряд функций, которые могут использоваться для преобразования в ряд типов:

STR(float [, length [,decimal]]) : преобразует число в строку. Второй параметр указывает на длину строки, а третий – сколько знаков в дробной части числа надо оставлять

CHAR(int) : преобразует числовой код ASCII в символ. Нередко используется для тех ситуаций, когда необходим символ, который нельзя ввести с клавиатуры

ASCII(char) : преобразует символ в числовой код ASCII

NCHAR(int) : преобразует числовой код UNICODE в символ

UNICODE(char) : преобразует символ в числовой код UNICODE

I have a query in sql, I have to get date in a format of dd/mmm/yy

How can I convert it for SQL server?

9 Answers 9

I’m not sure there is an exact match for the format you want. But you can get close with convert() and style 106 . Then, replace the spaces:

There are already multiple answers and formatting types for SQL server 2008. But this method somewhat ambiguous and it would be difficult for you to remember the number with respect to Specific Date Format. That’s why in next versions of SQL server there is better option.

If you are using SQL Server 2012 or above versions, you should use Format() function

With culture option, you can specify date as per your viewers.

For OP’s solution, we can use following format, which is already mentioned by @Martin Smith:

Some sample date formats:

If you want more date formats of SQL server, you should visit:

we can convert date into many formats like

This returns dd mon yyyy

More Here This may help you

The accepted answer already gives the best solution using built in formatting methods in 2008.

It should be noted that the results returned is dependent on the language of the login however.

at the time of writing.

For people coming across this question on more recent versions of SQL Server a method that avoids this issue – and the need to REPLACE is

On 2005+ it would be possible to write a CLR UDF that accepted a DateTime, Formatting Pattern and Culture to simulate the same.

By: Edgewood Solutions | Updated: 2019-05-16 | Comments (41) | Related: 1 | 2 | 3 | 4 | 5 | More > Dates
Problem

There are many instances when dates and times don’t show up at your doorstep in the format you’d like it to be, nor does the output of a query fit the needs of the people viewing it. One option is to format the data in the application itself. Another option is to use the built-in functions SQL Server provides to format the date string for you.

Solution

SQL Server provides a number of options you can use to format a date/time string. One of the first considerations is the actual date/time needed. The most common is the current date/time using getdate(). This provides the current date and time according to the server providing the date and time. If a universal date/time is needed, then getutcdate() should be used. To change the format of the date, you convert the requested date to a string and specify the format number corresponding to the format needed.

How to get different SQL Server date formats

  1. Use the date format option along with CONVERT function
  2. To get YYYY-MM-DD use SELECT CONVERT(varchar, getdate(), 23)
  3. To get MM/DD/YYYY use SELECT CONVERT(varchar, getdate(), 1)
  4. Check out the chart to get a list of all format options

Below is a list of formats and an example of the output. The date used for all of these examples is «2006-12-30 00:38:54.840».

DATE ONLY FORMATS
Format #QuerySample
1select convert(varchar, getdate(), 1)12/30/06
2select convert(varchar, getdate(), 2)06. 12.30
3select convert(varchar, getdate(), 3)30/12/06
4select convert(varchar, getdate(), 4)30.12.06
5select convert(varchar, getdate(), 5)30-12-06
6select convert(varchar, getdate(), 6)30 Dec 06
7select convert(varchar, getdate(), 7)Dec 30, 06
10select convert(varchar, getdate(), 10)12-30-06
11select convert(varchar, getdate(), 11)06/12/30
12select convert(varchar, getdate(), 12)061230
23select convert(varchar, getdate(), 23)2006-12-30
101select convert(varchar, getdate(), 101)12/30/2006
102select convert(varchar, getdate(), 102)2006.12.30
103select convert(varchar, getdate(), 103)30/12/2006
104select convert(varchar, getdate(), 104)30. 12.2006
105select convert(varchar, getdate(), 105)30-12-2006
106select convert(varchar, getdate(), 106)30 Dec 2006
107select convert(varchar, getdate(), 107)Dec 30, 2006
110select convert(varchar, getdate(), 110)12-30-2006
111select convert(varchar, getdate(), 111)2006/12/30
112select convert(varchar, getdate(), 112)20061230
TIME ONLY FORMATS
8select convert(varchar, getdate(), 8)00:38:54
14select convert(varchar, getdate(), 14)00:38:54:840
24select convert(varchar, getdate(), 24)00:38:54
108select convert(varchar, getdate(), 108)00:38:54
114select convert(varchar, getdate(), 114)00:38:54:840
DATE & TIME FORMATS
select convert(varchar, getdate(), 0)Dec 12 2006 12:38AM
9select convert(varchar, getdate(), 9)Dec 30 2006 12:38:54:840AM
13select convert(varchar, getdate(), 13)30 Dec 2006 00:38:54:840AM
20select convert(varchar, getdate(), 20)2006-12-30 00:38:54
21select convert(varchar, getdate(), 21)2006-12-30 00:38:54. 840
22select convert(varchar, getdate(), 22)12/30/06 12:38:54 AM
25select convert(varchar, getdate(), 25)2006-12-30 00:38:54.840
100select convert(varchar, getdate(), 100)Dec 30 2006 12:38AM
109select convert(varchar, getdate(), 109)Dec 30 2006 12:38:54:840AM
113select convert(varchar, getdate(), 113)30 Dec 2006 00:38:54:840
120select convert(varchar, getdate(), 120)2006-12-30 00:38:54
121select convert(varchar, getdate(), 121)2006-12-30 00:38:54.840
126select convert(varchar, getdate(), 126)2006-12-30T00:38:54.840
127select convert(varchar, getdate(), 127)2006-12-30T00:38:54.840
ISLAMIC CALENDAR DATES
130select convert(nvarchar, getdate(), 130)
131select convert(nvarchar, getdate(), 131)10/12/1427 12:38:54:840AM

You can also format the date or time without dividing characters, as well as concatenate the date and time string:

Sample statementOutput
select replace(convert(varchar, getdate(),101),’/’,”)12302006
select replace(convert(varchar, getdate(),101),’/’,”) + replace(convert(varchar, getdate(),108),’:’,”)12302006004426

If you want to get a list of all valid date and time formats, you could use the code below and change the @date to GETDATE() or any other date you want to use. This will output just the valid formats.

Recommended Reading

Continue your learning on SQL Server dates with these tips:

Next Steps
  • The formats listed above are not inclusive of all formats provided. Experiment with the different format numbers to see what others are available.
  • These formats can be used for all date/time functions, as well as data being served to clients, so experiment with these data format conversions to see if they can provide data more efficiently.
  • Also, check out the SQL Server FORMAT Function to Format Dates.

MS SQL Server: Убираем время из значения типа datetime

  • modified:

  • reading: 4 minutes

Этот текст является в какой то мере переводом топика Kevin Jones — Removing time from SQL datetime, так что если вы хорошо знаете английский, то лучше, наверное, читать руководство из первых рук. Правда, мой вариант дополнен некоторыми тестами.

Итак, мы довольно часто используем SQL сервер для хранения данных с типом дата и время. В SQL Server 2005/2000 существуют два типа данных (специальных типов данных) для хранения даты и времени – это datetime и smalldatetime, разница между ними в возможностях хранения (от и до), точности времени и, соответственно, в количестве используемой памяти. В SQL Server 2008 появились дополнительные типы данных, такие как datetime2, time, date, datetimeoffset, о них вы можете прочитать в статье на MSDN — Типы данных и функции даты и времени (Transact-SQL).

Вернемся же к типу DATETIME. Часто возникает необходимость выбрать из типа DATETIME только дату, а время установить равным 0:00. Не приходиться об этом думать, когда нужно просто вывести результат – тогда все можно сделать форматом вывода, например в C# это может быть “dd.MM.yyyy”. Другое дело, если с данными нужно еще оперировать (например, группировать по дате или что то прибавить или убавить), тогда нам необходим тип DATETIME, в котором нам нужно обнулять время.

Первый вариант, как можно это сделать (до прочтения топика Kevin Jones’а я так всегда и делал) – это привести изначально тип DATETIME в VARCHAR без времени (определенным форматом) и обратно:

SELECT CONVERT(DATETIME, CONVERT(VARCHAR(15), GETDATE(), 101))

Данный вариант достаточно часто встречается. Правда, от него могут быть проблемы в производительности, когда вы будите обрабатывать несколько тысяч строк и более.

Другой вариант, если вы используете SQL Server 2008 – это приводить DATETIME к упомянутому выше типу DATE:

SELECT CAST(GETDATE() AS DATE)

Вы так же можете привести данный тип потом к DATETIME, если вам необходимо оперировать именно с этим типом.

И все же, если вы до сих пор используете SQL Server версии 2005, то лучше способ, чем описанный выше способ с VARCHAR – это приведение к типу FLOAT, вызов FLOOR (целое от числа), а затем приведение обратно к DATETIME:

SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)

Kevin Jones утверждает, что данные операции пройдут быстрее, аргументируя это тем, что во время приведения к типу VARCHAR и обратно SQL сервер еще задумывается о collation и о форматах. Когда же переводишь тип данных DATETIME к FLOAT, то целая часть числа – хранит информацию о дне, а дробная о времени. Использую функцию FLOAR мы берем только время. Кстати, с таким подходом легко, к примеру, сразу же прибавить день к дате.

Я в отличие от Kevin Jones попробовал все таки провести тест сравнения этих двух методов, правда использовав SQL Server 2008. Я написал следующий тест:

set nocount on 
go 
 
declare @date datetime, @i int 
  
declare @test table(d datetime) 
 
set @date = getdate() 
set @i = 0 
 
-- заполняем тестовыми данными (10000001 строка с датами) 
while @i <= 10000000 
begin  
    insert into @test (d)  
    values (@date) 
 
    set @date = dateadd(minute, 1, @date) 
    set @i = @i + 1 
end 
 
 
print convert(varchar(20), getdate(), 109) 
 
-- тестируем способ с VARCHAR 
select convert(datetime, convert(varchar(15), d, 101))  
from @test 
 
print convert(varchar(20), getdate(), 109) 
 
-- тестируем способ с FLOAT 
select cast(floor(cast(d as float)) as datetime) 
from @test 
 
print convert(varchar(20), getdate(), 109)

Результат выполнения (в окне Messages):


Aug 10 2009 11:36:07
Aug 10 2009 11:37:15
Aug 10 2009 11:38:20

То есть, разница всего то в 3-х секундах (Если поменять местами методы, то разницы вообще не будет). Итог: при еще большем объеме, может быть, это и сыграет роль, но в данном случае выигрыш не заметен. Потому вывод: данный способ (приведения к FLOAT и обратно) нужно взять на заметку и использовать в дальнейшем, но в данный момент не стоит переписывать существующий функционал, так как большого прироста производительности это не даст.

P.S. Может быть, в SQL Server 2000/2005 будут другие результаты? Или, может быть, в реальной жизни выигрыш будет?

UPDATE

Благодаря комментариям Ulugbek Umirov и Евгений Веприков из ветки блогов GotDotNet получены более честные результаты.

Было предложено использовать COUNT, а не чистый вывод в окно Managment Studio:

print convert(varchar(20), getdate(), 109) 
 
-- тестируем способ с VARCHAR 
select count(convert(datetime, convert(varchar(15), d, 101))) 
from @test 
 
print convert(varchar(20), getdate(), 109) 
 
-- тестируем способ с FLOAT 
select count(cast(floor(cast(d as float)) as datetime)) 
from @test 
 
print convert(varchar(20), getdate(), 109)

И тогда результаты будут уже более значимыми:


Aug 11 2009 12:14:30
Aug 11 2009 12:14:38
Aug 11 2009 12:14:41

Разница уже более чем в два раза.

Так же был предложен еще один метод by Ulugbek Umirov:

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) 

Данный метод показывает лучше результаты на 2000 сервере, на 2005/2008 почти такой же.

See Also

Функции и форматы даты преобразования SQL

В этой статье мы рассмотрим различные форматы SQL Convert Date, которые можно использовать при написании SQL-запросов.

Нам нужно работать с данными типа даты в SQL. Иногда это может быть сложной задачей для разработчиков SQL Server. Предположим, у вас есть таблица Product с отметкой времени столбца. Он создает временную метку для каждого заказа клиента. С ним вы можете столкнуться со следующими проблемами

Мы действительно сталкиваемся со многими такими сценариями, когда у нас нет формата даты в соответствии с нашими требованиями.Мы не можем изменять свойства таблицы для удовлетворения каждого требования. В этом случае нам нужно использовать встроенные функции в SQL Server, чтобы задать требуемый формат даты.

У нас есть следующие типы данных даты и времени преобразования SQL в SQL Server.

В SQL Server мы использовали встроенные функции, такие как SQL GETDATE () и GetUTCDate () , чтобы предоставить дату и формат сервера в различных форматах.

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

Как подчеркивалось ранее, нам может потребоваться отформатировать дату в разных форматах в соответствии с нашими требованиями. Мы можем использовать функцию SQL CONVERT () в SQL Server для форматирования DateTime в различных форматах.

Синтаксис функции SQ: CONVERT () следующий.

Давайте рассмотрим различные форматы даты, используя функции преобразования даты SQL.

Сначала мы объявляем переменную для хранения текущего DateTime с помощью функции SQL GETDATE () со следующим запросом.

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

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

Давайте теперь исследуем функцию, которая полезна для даты преобразования SQL.

Мы можем использовать функцию SQL DATEADD , чтобы добавить определенный период к нашей дате. Предположим, у нас есть требование добавить 1 месяц к текущей дате. Мы можем использовать функцию SQL DATEADD для выполнения этой задачи.

Интервал: Мы можем указать интервал, который нужно добавить в указанную дату.У нас могут быть такие значения, как год, квартал, месяц, день, неделя, час, минута и т. Д.

Число: Указывает номер добавляемого интервала. Например, если мы указали интервал как Месяц, а Число как 2, это означает, что к дате нужно добавить 2 месяца.

В следующем запросе мы хотим добавить 2 месяца к текущей дате.

Вы можете увидеть результат на следующем снимке экрана.

Точно так же давайте добавим 1 год к текущей дате, используя следующий запрос.

Мы можем объединить функции SQL DATEADD и CONVERT , чтобы получить вывод в желаемых форматах DateTime. Предположим, в предыдущем примере; нам нужен формат даты MMM DD, YYYY. Мы можем использовать код формата 107 для вывода в этом формате.

Выполните следующий код, чтобы получить новую дату и ConvertedDate.

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

Форматы даты и времени

Запрос даты преобразования SQL

Выход

Формат даты и времени как
ММ / ДД / ГГ

Стандартный : U.S.A.

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 1) как [MM / DD / YY]

Формат даты и времени в формате
ГГ.ММ.ДД формат

Стандартный : ANSI

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 2) как [YY. MM.DD]

Формат даты и времени в формате
ДД / ММ / ГГ

Стандартный : британский / французский

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 3) как [DD / MM / YY]

Формат даты и времени в DD.Формат MM.YY

Стандартный : немецкий

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 4) как [DD.MM.YY]

Формат даты и времени в формате
ДД-ММ-ГГ

Стандартный : итальянский

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 5) как [DD-MM-YY]

Формат даты и времени в формате
ДД МММ ГГ

Стандарт : сокращенное название месяца

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 6) как [DD MMM YY]

Формат даты и времени в формате
MMM DD, YY

Стандарт : сокращенное название месяца

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 7) как [MMM DD, YY]

Формат даты и времени
В ЧЧ: ММ: СС

Стандарт : 24 часа в сутки

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 8) как [чч: мм: сс]

Формат даты и времени как

[МММ ДД ГГГГ чч: мм: сс: ммм (AM / PM)]

Стандарт : по умолчанию + миллисекунды

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 9) как [MMM DD YYYY hh: mm: ss: mmm (AM / PM)]

Формат даты и времени в формате
ММ-ДД-ГГ

Стандарт : США

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 10) как [MM-DD-YY]

Формат даты и времени в формате
ГГ / ММ / ДД

Стандарт : ЯПОНИЯ

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 11) как [YY / MM / DD]

Формат даты и времени в формате
ГГММДД

Стандарт : ISO

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 12) как [YYMMDD]

Формат даты и времени в формате
ДД МММ ГГГГ ЧЧ: ММ: СС: МММ

Стандарт: Европа по умолчанию + миллисекунды

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 13) как [ДД МММ ГГГГ ЧЧ: ММ: СС: МММ]

Формат даты и времени в
ЧЧ: ММ: СС: МММ

Стандарт: 24-часовое время с миллисекундами

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 14) как [HH: MM: SS: MMM]

Формат даты и времени в формате
ГГГГ-ММ-ДД ЧЧ: ММ: СС

По умолчанию: Канонический ODBC

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 20) как [YYYY-MM-DD HH: MM: SS]

Формат даты и времени в формате
ГГГГ-ММ-ДД ЧЧ: ММ: СС. ммм

Стандартный : канонический ODBC с миллисекундами

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 21) как [YYYY-MM-DD HH: MM: SS.mmm]

Формат даты и времени в формате
мм / дд / гг чч: мм: сс (AM / PM)

Стандарт : США с временем AM / PM

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 22) как [мм / дд / гг чч: мм: сс (AM / PM)]

Формат даты и времени в формате
[гггг-мм-дд]

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 23) как [yyyy-mm-dd]

Формат даты и времени в формате
[чч: мм: сс]

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 24) как [чч: мм: сс]

Формат даты и времени в формате
[мм-дд-гггг чч: мм: сс. ммм]

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 27) как [мм-дд-гггг чч: мм: сс.ммм]

Формат даты и времени в формате
[МММ ДД ГГГГ ЧЧ: СС (AM / PM)]

Стандарт : По умолчанию

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 100) как [MMM DD YYYY HH: SS (AM / PM)]

Формат даты и времени в формате
[ММ / ДД / ГГГГ]

Стандарт : США

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 101) как [MM / DD / YYYY]

Формат даты и времени в формате
[ГГГГ. MM.DD]

Стандарт : ANSI

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 102) как [YYYY.MM.DD]

Формат даты и времени в формате
ДД / ММ / ГГГГ

Стандартный : британский / французский

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 103) как [ДД / ММ / ГГГГ]

Формат даты и времени в формате
DD.Формат MM.YY

Стандарт : немецкий

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 104) как [ДД / ММ / ГГГГ]

Формат даты и времени в формате
ДД-ММ-ГГ

Стандартный : итальянский

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 105) как [ДД / ММ / ГГГГ]

Формат даты и времени в формате
ДД МММ ГГГГ

Стандарт : сокращенное название месяца

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 106) как [ДД МММ ГГГГ]

Формат даты и времени в формате
MMM DD, YYYY

Стандарт : сокращенное название месяца

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 107) как [MMM DD, YYYY]

Формат даты и времени

В ЧЧ: ММ: SS

Стандарт : 24 часа в сутки

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 108) как [HH: MM: SS]

Формат даты и времени как


[МММ ДД ГГГГ чч: мм: сс: ммм (AM / PM)]

Стандарт : по умолчанию + миллисекунды

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 109) как [MMM DD YYYY hh: mm: ss: mmm (AM / PM)]

Формат даты и времени в формате
ММ-ДД-ГГ

Стандарт: США

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 110) как [MM-DD-YYYY]

Формат даты и времени в формате
ГГГГ / ММ / ДД

Стандарт : ЯПОНИЯ

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 111) как [YYYY / MM / DD]

Формат даты и времени в формате
ГГГГММДД

Стандарт : ISO

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 112) как [ГГГГММДД]

Формат даты и времени в формате
ДД МММ ГГГГ ЧЧ: ММ: СС: МММ

Стандарт: Европа по умолчанию + миллисекунды

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 113) как [ДД МММ ГГГГ ЧЧ: ММ: СС: МММ]

Формат даты и времени в
ЧЧ: ММ: СС: МММ

Стандарт: 24-часовое время с миллисекундами

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 114) как [ДД МММ ГГГГ ЧЧ: ММ: СС: МММ]

Формат даты и времени в формате
ГГГГ-ММ-ДД ЧЧ: ММ: СС

По умолчанию: Канонический ODBC

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 120) как [YYYY-MM-DD HH: MM: SS]

Формат даты и времени в формате
ГГГГ-ММ-ДД ЧЧ: ММ: СС. ммм

Стандарт: Канонический ODBC с миллисекундами

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 121) как [YYYY-MM-DD HH: MM: SS.mmm]

Формат даты и времени в формате
ГГГГ-ММ-ДДТЧЧ: ММ: СС.ммм

Стандарт : ISO8601

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 126) как [yyyy-mm-ddThh: mi: ss.mmm]

Формат даты и времени в формате
[ДД МММ ГГГГ чч: ми: сс: ммм (AM / PM)]

Стандарт : дата по исламу / хиджре

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 130) как [дд мон гггг чч: ми: сс: ммм (AM / PM)]

Помощник по SQL Server — советы и рекомендации

Home > Советы
и хитрости > Форматы даты
Дата
Форматы

Один из
наиболее часто задаваемые вопросы на форумах SQL Server — как отформатировать
значение datetime или столбец в определенный формат даты.Вот краткое изложение
различные форматы даты, которые входят в стандартную комплектацию SQL Server как часть CONVERT
функция. После стандартных форматов даты идут некоторые расширенные даты.
форматы, которые часто задают разработчики SQL Server.

Следует отметить, что выходные данные этих форматов даты являются данными VARCHAR.
типы уже, а не DATETIME типа данных. Имея это в виду,
любые сравнения дат, выполняемые после форматирования значения datetime, являются
используя значение VARCHAR даты и времени, а не исходное значение DATETIME
ценность.

Стандартные форматы даты
Формат даты Стандартный Заявление SQL Пример вывода
Пн ДД ГГГГ 1
HH: МАЙАМ (или PM)
По умолчанию ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 100) 1 января 2005 13:29 1
ММ / ДД / ГГ США ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 1) КАК [ММ / ДД / ГГ] 23.11.98
ММ / ДД / ГГГГ США ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 101) КАК [ММ / ДД / ГГГГ] 23.11.1998
ГГ.MM.DD ANSI ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 2) AS [ГГ.ММ.ДД] 72.01.01
ГГГГ.ММ.ДД ANSI ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 102) AS [ГГГГ.ММ.ДД] 1972.01.01
ДД / ММ / ГГ британский / французский ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 3) AS [ДД / ММ / ГГ] 19.02.72
ДД / ММ / ГГГГ британский / французский ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 103) как [ДД / ММ / ГГГГ] 19.02.1972
DD.ММ.ГГ Немецкий ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 4) AS [ДД.ММ.ГГ] 25.12.05
ДД.ММ.ГГГГ Немецкий SELECT CONVERT (VARCHAR (10), GETDATE (), 104) AS [ДД.ММ.ГГГГ] 25.12.2005
ДД-ММ-ГГ Итальянский ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 5) КАК [ДД-ММ-ГГ] 24-01-98
ДД-ММ-ГГГГ Итальянский ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 105) КАК [ДД-ММ-ГГГГ] 24-01-1998
ДД Пн ГГ 1 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (9), GETDATE (), 6) КАК [ДД МЕС ГГ] 04 июл 06 1
ДД Пн ГГГГ 1 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (11), GETDATE (), 106) КАК [ДД МЕС ГГГГ] 4 июля 2006 г. 1
Пн ДД, ГГ 1 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 7) КАК [Пн ДД, ГГ] 24 января 98 г. 1
Пн ДД, ГГГГ 1 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (12), GETDATE (), 107) AS [Пн ДД, ГГГГ] 24 января 1998 г. 1
ЧЧ: ММ: СС ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 108) 03:24:53
Пн ДД ГГГГ ЧЧ: МИ: СС: МММАМ (или PM) 1 По умолчанию +

миллисекунды
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (26), GETDATE (), 109) 28 апреля 2006 г. 12:32: 29: 253PM 1
ММ-ДД-ГГ США ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 10) КАК [ММ-ДД-ГГ] 01-01-06
ММ-ДД-ГГГГ США ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 110) КАК [ММ-ДД-ГГГГ] 01-01-2006
ГГ / ММ / ДД ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 11) КАК [ГГ / ММ / ДД] 98/11/23
ГГГГ / ММ / ДД ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 111) КАК [ГГГГ / ММ / ДД] 23.11.1998
ГГММДД ISO ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (6), GETDATE (), 12) КАК [ГГММДД] 980124
ГГГГММДД ISO ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 112) КАК [ГГГГММДД] 19980124
ДД Пн ГГГГ ЧЧ: ММ: СС: МММ (24ч) 1 Европа по умолчанию + миллисекунды ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (24), GETDATE (), 113) 28 апреля 2006 г. 00: 34: 55: 190 1
HH: MI: SS: MMM (24H) ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (12), GETDATE (), 114) КАК [ЧЧ: МИ: СС: МММ (24Ч)] 11: 34: 23: 013
ГГГГ-ММ-ДД ЧЧ: ИМ: СС (24ч) ODBC канонический ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (19), GETDATE (), 120) 1972-01-01 13:42:24
ГГГГ-ММ-ДД ЧЧ: МИ: СС.МММ (24 часа) ODBC канонический
(с миллисекундами)
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (23), GETDATE (), 121) 1972-02-19 06: 35: 24.489
ГГГГ-ММ-ДДТЧЧ: ММ: СС: МММ ISO8601 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (23), GETDATE (), 126) 1998-11-23T11: 25: 43: 250
ДД Пн ГГГГ ЧЧ: МИ: СС: МММАМ 1 Кувейт ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (26), GETDATE (), 130) 28 апреля 2006 г. 12:39:32: 429AM 1
ДД / ММ / ГГГГ ЧЧ: МИ: СС: МММАМ Кувейт ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (25), GETDATE (), 131) 28.04.2006 12: 39: 32: 429AM

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

Расширенные форматы даты
Формат даты Заявление SQL Пример вывода
ГГ-ММ-ДД

ВЫБРАТЬ ПОДСТРОКУ (ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 120), 3, 8) КАК [ГГ-ММ-ДД]

ВЫБРАТЬ ЗАМЕНА (ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 11), ‘/’, ‘-‘) КАК [ГГ-ММ-ДД]

99-01-24
ГГГГ-ММ-ДД

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 120) КАК [ГГГГ-ММ-ДД]

SELECT REPLACE (CONVERT (VARCHAR (10), GETDATE (), 111), ‘/’, ‘-‘) AS [ГГГГ-ММ-ДД]

1999-01-24
ММ / ГГ ВЫБРАТЬ ВПРАВО (ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 3), 5) КАК [ММ / ГГ]
ВЫБРАТЬ ПОДСТРОКУ (ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 3), 4, 5) КАК [ММ / ГГ]
08/99
ММ / ГГГГ ВЫБРАТЬ ВПРАВО (CONVERT (VARCHAR (10), GETDATE (), 103), 7) AS [MM / YYYY] 12/2005
ГГ / ММ ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (5), GETDATE (), 11) КАК [ГГ / ММ] 99/08
ГГГГ / ММ ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (7), GETDATE (), 111) КАК [ГГГГ / ММ] 2005/12
Месяц ДД, ГГГГ 1 ВЫБРАТЬ ИМЯ ДАТЫ (MM, GETDATE ()) + RIGHT (CONVERT (VARCHAR (12), GETDATE (), 107), 9)
AS [Месяц ДД, ГГГГ]
4 июля 2006 г. 1
Пн ГГГГ 1 ВЫБРАТЬ ПОДСТРОКУ (ПРЕОБРАЗОВАТЬ (VARCHAR (11), GETDATE (), 113), 4, 8) AS [Пн ГГГГ] Апрель 2006 г. 1
Месяц ГГГГ 1 ВЫБРАТЬ ИМЯ ДАТЫ (MM, GETDATE ()) + » + CAST (YEAR (GETDATE ()) AS VARCHAR (4)) AS
[Месяц ГГГГ]
Февраль 2006 г. 1
DD Месяц 1 ВЫБРАТЬ CAST (ДЕНЬ (GETDATE ()) AS VARCHAR (2)) + » + DATENAME (MM, GETDATE ()) AS
[DD Месяц]
11 сентября 1
Месяц DD 1 ВЫБРАТЬ ИМЯ ДАТЫ (MM, GETDATE ()) + » + CAST (DAY (GETDATE ()) AS VARCHAR (2)) AS
[Месяц ДД]
11 сентября 1
ДД Месяц ГГ 1 SELECT CAST (ДЕНЬ (GETDATE ()) AS VARCHAR (2)) + » + DATENAME (MM, GETDATE ()) + »
+ RIGHT (CAST (YEAR (GETDATE ()) AS VARCHAR (4)), 2) AS [DD Месяц YY]
19 февраля 72 1
ДД Месяц ГГГГ 1 SELECT CAST (ДЕНЬ (GETDATE ()) AS VARCHAR (2)) + » + DATENAME (MM, GETDATE ()) + »
+ CAST (YEAR (GETDATE ()) AS VARCHAR (4)) AS [DD Month YYYY]
11 сентября 2002 г. 1
ММ-ГГ ВЫБРАТЬ ВПРАВО (ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 5), 5) КАК [ММ-ГГ]
ВЫБРАТЬ ПОДСТРОКУ (CONVERT (VARCHAR (8), GETDATE (), 5), 4, 5) AS [MM-YY]
12/92
ММ-ГГГГ ВЫБРАТЬ ВПРАВО (ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 105), 7) КАК [ММ-ГГГГ] 05-2006
ГГ-ММ ВЫБРАТЬ ВПРАВО (ПРЕОБРАЗОВАТЬ (VARCHAR (7), GETDATE (), 120), 5) КАК [ГГ-ММ]
ВЫБРАТЬ ПОДСТРОКУ (CONVERT (VARCHAR (10), GETDATE (), 120), 3, 5) AS [YY-MM]
92/12
ГГГГ-ММ ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (7), GETDATE (), 120) КАК [ГГГГ-ММ] 2006-05
MMDDYY SELECT REPLACE (CONVERT (VARCHAR (10), GETDATE (), 1), ‘/’, ») AS [MMDDYY] 122506
MMDDYYYY SELECT REPLACE (CONVERT (VARCHAR (10), GETDATE (), 101), ‘/’, ») AS [MMDDYYYY] 12252006
ДДММГГ SELECT REPLACE (CONVERT (VARCHAR (10), GETDATE (), 3), ‘/’, ») AS [DDMMYY] 240702
ДДММГГГГ SELECT REPLACE (CONVERT (VARCHAR (10), GETDATE (), 103), ‘/’, ») AS [DDMMYYYY] 24072002
Пн-ГГ 1 ВЫБРАТЬ ЗАМЕНИТЬ (ПРАВО (ПРЕОБРАЗОВАТЬ (VARCHAR (9), GETDATE (), 6), 6), », ‘-‘) КАК
[Пн-ГГ]
сен-02 1
Пн-ГГГГ 1 ВЫБРАТЬ ЗАМЕНИТЬ (ПРАВО (ПРЕОБРАЗОВАТЬ (VARCHAR (11), GETDATE (), 106), 8), », ‘-‘) КАК
[Пн-ГГГГ]
сентябрь 2002 г. 1
ДД-Пн-ГГ 1 SELECT REPLACE (CONVERT (VARCHAR (9), GETDATE (), 6), », ‘-‘) AS [ДД-Пн-ГГ] 25 декабря 05 1
ДД-Пн-ГГГГ 1 SELECT REPLACE (CONVERT (VARCHAR (11), GETDATE (), 106), », ‘-‘) AS [ДД-Пн-ГГГГ] 25 декабря 2005 г. 1

1 Чтобы название месяца было в верхнем регистре, просто используйте
строковая функция UPPER.

Связанные темы:

Шпаргалка по формату даты SQL Server

В MS SQL Server вы можете использовать функцию CONVERT () для преобразования выражения из одного типа данных в другой тип данных. Когда дело доходит до преобразования значения datetime в символ, существует множество стилей форматирования для вывода.

В этом посте мы собираемся представить все форматы даты, а также соответствующий оператор CONVERT () в SQL Server.

Общий синтаксис для преобразования значения datetime или smalldatetime в символ:

  ВЫБРАТЬ КОНВЕРТ (VARCHAR (n), GETDATE (), стиль)
  

И стиль даты и времени можно выбрать из списка ниже:

Стиль Стандартный Заявление CONVERT Выход
100 По умолчанию для datetime и smalldatetime ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 100) пн дд гггг чч: miAM (или PM)
101 U.С. ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 101) КАК [ММ / ДД / ГГГГ] мм / дд / гггг
102 ANSI ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 102) AS [ГГГГ.ММ.ДД] гггг.мм.дд
103 британский / французский ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 103) как [ДД / ММ / ГГГГ] дд / мм / гггг
104 Немецкий ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 104) AS [DD.ММ.ГГГГ] дд.мм.гггг
105 Итальянский ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 105) КАК [ДД-ММ-ГГГГ] дд-мм-гггг
106 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (11), GETDATE (), 106) КАК [ДД МЕС ГГГГ] дд пн гггг
107 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (12), GETDATE (), 107) AS [Пн ДД, ГГГГ] пн дд, гггг
108 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 108) чч: миля: сс
109 По умолчанию + миллисекунды ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (26), GETDATE (), 109) пн дд гггг чч: ми: сс: мммAM (или PM)
110 США ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 110) КАК [ММ-ДД-ГГГГ] мм-дд-гггг
111 ЯПОНИЯ ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 111) КАК [ГГГГ / ММ / ДД] гггг / мм / дд
112 ISO ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 112) КАК [ГГГГММДД] ггггммдд
113 Европа по умолчанию + миллисекунды ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (24), GETDATE (), 113) дд пн гггг чч: ми: сс: ммм (24 ч)
114 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (12), GETDATE (), 114) КАК [ЧЧ: МИ: СС: МММ (24Ч)] чч: миль: сс: ммм (24 часа)
120 ODBC канонический ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (19), GETDATE (), 120) гггг-мм-дд чч: ми: сс (24 ч)
121 Канонический ODBC (с миллисекундами) по умолчанию для времени, даты, datetime2 и datetimeoffset ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (23), GETDATE (), 121) гггг-мм-дд чч: ми: сс.ммм (24 часа)
126 ISO8601 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (23), GETDATE (), 126) гггг-мм-ддThh: mi: ss.mmm (без пробелов)
130 хиджры ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (26), GETDATE (), 130) дд пн гггг чч: ми: сс: мммAM
131 хиджра ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (25), GETDATE (), 131) дд / мм / гггг чч: ми: сс: мммAM

Нужен хороший инструмент с графическим интерфейсом для MS SQL Server? Попробуйте TablePlus, современный собственный инструмент для нескольких баз данных, включая SQL Server, MySQL, PostgreSQL, SQLite и т. Д.И его можно использовать бесплатно столько, сколько вам нужно.

Загрузить TablePlus для Mac .

Не на Mac? Скачать TablePlus для Windows .

В Linux? Загрузить TablePlus для Linux

Требуется быстрое редактирование на ходу? Скачать TablePlus для iOS .

Преобразование формата даты в формат ДД / МММ / ГГГГ в SQL Server

Уже существует несколько ответов и типов форматирования для SQL Server 2008.Но этот метод несколько неоднозначен, и вам будет сложно запомнить число в отношении конкретного формата даты. Поэтому в следующих версиях SQL-сервера есть вариант получше.

Если вы используете SQL Server 2012 или более позднюю версию, вы должны использовать функцию Format ()

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

С опцией культуры вы можете указать дату в соответствии с вашими зрителями.

  ОБЪЯВИТЬ @d DATETIME = '01.10.2011';
ВЫБЕРИТЕ ФОРМАТ (@d, 'd', 'en-US') AS 'US English Result'
      , FORMAT (@d, 'd', 'en-gb') AS 'UK English Result'
      , FORMAT (@d, 'd', 'de-de') КАК 'Немецкий результат'
      , FORMAT (@d, 'd', 'zh-cn') AS "Результат на упрощенном китайском (КНР)";
  
ВЫБЕРИТЕ ФОРМАТ (@d, 'D', 'en-US') AS 'US English Result'
      , FORMAT (@d, 'D', 'en-gb') AS 'UK English Result'
      , FORMAT (@d, 'D', 'de-de') КАК 'Немецкий результат'
      , FORMAT (@d, 'D', 'zh-cn') AS 'Китайский (упрощенный КНР) результат';

Результат на английском языке (США) Результат на английском языке в Великобритании Результат на немецком языке (КНР) на упрощенном китайском языке
---------------- ----------------------------- ----- -------- -------------------------------------
01.10.2011 10.01.2011 01.10.2011 2011/10/1

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

Для решения OP мы можем использовать следующий формат, который уже упоминался @Martin Smith:

  ФОРМАТ (GETDATE (), 'дд / МММ / гггг', 'en-us')
  

Некоторые примеры форматов даты:

Если вам нужны другие форматы дат SQL-сервера, посетите:

  1. Пользовательский формат даты и времени
  2. Стандартный формат даты и времени

Формат SQL DATE — форматирование даты SQL Server с помощью преобразования, формат

В этой статье мы покажем вам, как выполнить форматирование SQL DATE или форматирование даты и времени SQL Server на примере.

Пример формата SQL DATE

Прежде чем перейти к практическому примеру, позвольте мне объяснить вам список доступных форматов даты преобразования в Sql Server. Для этой демонстрации мы собираемся написать различные запросы формата даты SQL, используя функции CONVERT и FORMAT. Функция ПРЕОБРАЗОВАТЬ предоставляет различные стили форматирования для форматирования даты и времени.

Без Century (yy) With Century (yyyy) Ввод / вывод Standard
0 до 100 mon dd yyyy hh: miAM (or PM) Это Значение по умолчанию для datetime и smalldatetime
1 101 1 = мм / дд / гг
101 = мм / дд / гггг
U.S.
2 102 2 = гг.мм.дд
102 = гггг.мм.дд
ANSI
3 103 3 = дд / мм / гг
103 = дд / мм / гггг
Британский / французский
4 104 4 = дд.мм.гг
104 = дд.мм.гггг
Немецкий
5 105 5 = дд-мм-гг
105 = дд-мм-гггг
итальянский
6 106 6 = дд мес гг
106 = дд мес гггг
7 107 7 = пн дд, гг
107 = пн дд, гггг
8 108 чч: ми: сс
9 или 109 пн дд гггг чч : mi: ss: mmmmAM (или PM) По умолчанию + миллисекунды
10 110 10 = мм-дд-гг
110 = мм-дд-гггг
США
11 111 11 = гг / мм / дд
111 = гггг / мм / дд
ЯПОНИЯ
12 112 12 = ггммдд
112 = ггггммдд
ISO
13 или 113 дд мон гггг чч: ми: сс: ммм (24 ч) Европа По умолчанию + миллисекунда
14 114 чч: ми : ss: mmm (24h)
20 or 120 yyyy-mm-dd hh: mi: ss (24h) ODBC canonical
21 or 121 гггг-мм-дд чч: ми: сс.mmm (24h) Канонический ODBC с миллисекундами. Это значение по умолчанию для времени, даты, datetime2 и datetimeoffset
126 гггг-мм-ддThh: mi: ss.mmm (без пробелов) ISO8601
127 гггг-мм-ддThh: mi: ss.mmmZ (без пробелов) ISO8601 с часовым поясом Z
130 дд мон гггг чч: ми: сс: мммAM Хиджри
131 дд / мм / гггг чч: mi: ss: mmmAM Hijri

Пример формата даты преобразования SQL

В этом примере SQL мы собираемся использовать функцию CONVERT для GETDATE (), чтобы вернуть дату в разных форматах.

 - Использование функции CONVERT для формата даты SQL Server
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE ()) AS 'Результат 1';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 0) AS 'Результат 2';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 100) AS 'Результат 3';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 1) AS 'Результат 4';
ВЫБРАТЬ КОНВЕРТ (VARCHAR (20), GETDATE (), 101) AS 'Результат 5';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 2) AS 'Результат 6';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 102) AS 'Результат 7'; 

Преобразование формата SQL DATE, пример 2

Этот пример запроса охватывает еще несколько форматов даты в функции преобразования

 - Использование функции CONVERT для формата даты SQL Server
ВЫБРАТЬ КОНВЕРТ (VARCHAR (20), GETDATE (), 3) AS 'Результат 8';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 103) AS 'Результат 9';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 4) AS 'Результат 10';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 104) AS 'Результат 11';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 5) AS 'Результат 12';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 105) AS 'Результат 13';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 6) AS 'Результат 14';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 106) AS 'Результат 15'; 

В этом примере запроса мы показываем несколько других форматов даты в функции преобразования:

 - Использование функции CONVERT для формата даты SQL Server
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 7) AS 'Результат 16';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 107) AS 'Результат 17';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 8) AS 'Результат 18';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 108) AS 'Результат 19';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 9) AS 'Результат 20';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 109) AS 'Результат 21';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 10) AS 'Результат 22';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 110) AS 'Результат 23'; 

Другой формат даты преобразования

 - Использование функции CONVERT для формата даты SQL Server
--Использование функции CONVERT для формата даты SQL Server
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 11) AS 'Результат 24';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 111) AS 'Результат 25';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 12) AS 'Результат 26';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 112) AS 'Результат 27';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 113) AS 'Результат 28';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 14) AS 'Результат 29';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 114) AS 'Результат 30';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 20) AS 'Результат 31'; 

Ниже приводится список оставшихся опций форматирования, доступных в функции преобразования для формата даты.

 --Использование CONVERT для форматирования даты в SQL Server
ВЫБРАТЬ КОНВЕРТ (VARCHAR (35), GETDATE (), 21) AS 'Результат 32';

ВЫБРАТЬ CONVERT (VARCHAR (35), GETDATE (), 126) AS 'Результат 33';

ВЫБРАТЬ CONVERT (VARCHAR (35), GETDATE (), 127) AS 'Результат 34';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (NVARCHAR (35), GETDATE (), 130) AS 'Результат 35';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (NVARCHAR (35), GETDATE (), 131) AS 'Результат 36'; 

Формат даты SQL с использованием функции FORMAT

В этом примере мы собираемся использовать функцию FORMAT в GETDATE (), чтобы вернуть дату в разных форматах.Я предлагаю вам обратиться к строкам стандартного формата даты и времени, чтобы понять форматы строк, которые мы использовали в этом примере.

 - Использование функции FORMAT для формата даты SQL Server
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'd', 'en-US') как 'Результат 1'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'D', 'en-US') как 'Результат 2'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'f', 'en-US') как 'Результат 3'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'F', 'en-US') как 'Результат 4'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'g', 'en-US') как 'Результат 5'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'G', 'en-US') как 'Результат 6'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'm', 'en-US') как 'Результат 7'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'M', 'en-US') AS 'Результат 8' 

Ниже приводится список оставшихся форматов, которые доступны в функции форматирования для формата даты.

 - Использование функции FORMAT для формата даты SQL Server
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'O', 'en-US') как 'Результат 9'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'R', 'en-US') как 'Результат 10'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 's', 'en-US') как 'Результат 11'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'S', 'en-US') как 'Результат 12'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 't', 'en-US') как 'Результат 13'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'T', 'en-US') как 'Результат 14'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'u', 'en-US') как 'Результат 15'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'U', 'en-US') КАК 'Результат 16'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'Y', 'en-US') AS 'Результат 17' 

Формат даты с использованием функций даты и времени

Здесь мы собираемся использовать функции ДАТА и ВРЕМЯ, которые доступны для форматирования даты и времени в SQL Server, чтобы возвращать дату в разных форматах.

 - Использование различных функций даты и времени для формата даты SQL Server
ВЫБЕРИТЕ ДАННЫЕ (2017, 06, 14) КАК «Результат 1»;

ВЫБЕРИТЕ ДАННЫЕ ЗНАЧЕНИЯ (2017, 06, 14, 11, 57, 53, 847) КАК «Результат 3»;

ВЫБЕРИТЕ EOMONTH ('20170614') как «Результат 3»; 

Формат даты с использованием функций преобразования

В этом примере мы собираемся использовать функции преобразования сервера Sql для форматирования даты. А функции разговора — это PARSE, TRY_PARSE, CONVERT и TRY_CONVERT. Мы используем эти функции для разных дат, чтобы возвращать дату в разных форматах.

 - Использование различных функций преобразования для формата даты SQL Server
ВЫБЕРИТЕ PARSE ('среда, 14 июня 2017 г.' КАК ДАТА ВРЕМЕНИ ИСПОЛЬЗУЕТСЯ 'en-US') КАК 'Результат 4';

ВЫБЕРИТЕ TRY_PARSE ('среда, 14 июня 2017 г.' AS DATETIME USING 'en-US') AS 'Result 5';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (ДАТАВРЕМЯ2, СИСДАТЕТИММ ()) КАК 'Результат 6';

ВЫБЕРИТЕ TRY_CONVERT (DATETIME2, '14.06.2017 11:57:53 AM') как 'Результат 7'; 

Пользователи, которые хотят сохранить форматы даты, предоставляемые функцией ПРЕОБРАЗОВАНИЕ на своих мобильных телефонах, могут использовать следующее изображение:

DateFormat для SQL Server

Вы когда-нибудь пытались найти функцию DateFormat или date_format в SQL Server? Скорее всего, вы, вероятно, в конечном итоге объединили кучу строк DatePart , чтобы получить формат, который вы ищете.

А как насчет группировки по дате в SQL Server? Это может быть проблемой, потому что типы datetime и smalldatetime оба содержат время дня, поэтому вы не можете просто добавить datetime в предложение GROUP BY , потому что оно будет группироваться по времени, а не по Дата.

Я работаю с SQL Server с версии 7, и буквально сегодня я нашел хороший способ сделать это!

Оказывается, есть третий аргумент функции CONVERT на сервере SQL, который принимает стиль (принимает целое число).Если вы передадите 101 , он вернет дату в формате мм / дд / гггг.

Так, например, предположим, что вы хотите получить доход за определенный день, вы бы сделали что-то вроде этого:

ВЫБРАТЬ СУММУ (PricePaid) КАК доход, ПРЕОБРАЗОВАТЬ (char (10), DateOrdered, 101) AS DateOrdered
ОТ Заказы
ГРУППА ПО ПРЕОБРАЗОВАНИЮ (char (10), DateOrdered, 101)
 

Вот несколько значений стиля , которые вы можете использовать:

Стиль Маска формата преобразования
0 пн дд гггг чч: miAM (это стиль по умолчанию)
1 мм / дд / гг
101 мм / дд / гггг
112 ггггммдд
126 гггг-мм-ддЧч: ми: сс.ммм (формат ISO8601)

Полный список можно найти в документации CONVERT .

Это все еще не самое красивое решение, но оно намного лучше, чем использование DatePart . PS — Microsoft, почему бы не дать нам настоящую функцию DateFormat ?

DateFormat для SQL Server впервые был опубликован 5 декабря 2008 г.

Преобразование DateTime в формат YYYY-MM-DD в SQL Server

Часто может потребоваться преобразовать значение datetime в конкретную дату в формате, например YYYY -ММ-ДД.До SQL Server 2012 мы использовали CONVERT для форматирования даты. В SQL Server 2012 Microsoft представила встроенную строковую функцию FORMAT. Используя FORMAT, вы можете форматировать значение datetime по своему усмотрению. Давайте посмотрим, как использовать функцию FORMAT для форматирования даты.

Синтаксис

ФОРМАТ (<значение>, <формат>)

Куда:
 = В нашем случае это дата, время или дата,
 = В нашем случае это «гггг-ММ-дд».
ПРИМЕЧАНИЕ. Убедитесь, что yyyy в нижнем регистре, MM в верхнем регистре dd в нижнем регистре.Возврат:
Отформатированная дата в формате nvarchar.
 

Пример

DECLARE @date DateTime;

НАБОР @date = GetDate ()

ВЫБЕРИТЕ ФОРМАТ (@date, 'yyyy-MM-dd')
ИДТИ

/ * Результат * /
2019-06-27
 

Другие форматы даты

Вы можете использовать функцию FORMAT, форматировать значение datetime можно несколькими другими способами. Вот несколько примеров.

DECLARE @date DateTime;

НАБОР @date = GetDate ()

ВЫБРАТЬ
FORMAT (@date, 'yyyy-MM-dd hh-mm-ss') как 'Date & amp; Время',
FORMAT (@date, 'MM / dd / yyyy') Как 'Дата в формате США',
FORMAT (@date, 'yyyy / MM / dd') как 'Date'
ИДТИ

/ * Результат * /
Дата и время Дата в формате США Дата
----------------------- ------------------ -----
2019-06-27 01-38-02 27.06.2019 2019.06.27
 

Форматирование даты на основе культуры

В SQL Server 2017.Microsoft улучшила встроенную функцию FORMAT, добавив форматирование на основе языка и региональных параметров. Это можно сделать с помощью необязательного третьего параметра. Вот синтаксис и пример форматирования даты на основе языка и региональных параметров:

Синтаксис

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

Куда:
 = В нашем случае это дата, время или дата,
 = В нашем случае это
   строчная буква d для краткого формата даты и времени, или
   заглавная буква «D» для более длинной версии.
 = культура

Возврат:
Отформатированная дата в формате nvarchar.

Пример

 DECLARE @date DateTime;

НАБОР @date = GetDate ()

ВЫБРАТЬ
FORMAT (@date, 'd', 'en-US') Как 'Короткая дата в США',
FORMAT (@date, 'D', 'en-US') Как 'Длинная дата США',
FORMAT (@date, 'd', 'en-GB') Как 'British Short Date',
FORMAT (@date, 'D', 'en-GB') Как 'British Long Date',
FORMAT (@date, 'd', 'en-IN') Как 'Indian Short Date',
FORMAT (@date, 'D', 'en-IN') как 'Indian Long Date'
ИДТИ

/ * Результат * /
Короткая дата в США Длинная дата в США Британская короткая дата Британская длинная дата в Индии Короткая дата в Индии

27.

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

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