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
- Use the date format option along with CONVERT function
- To get YYYY-MM-DD use SELECT CONVERT(varchar, getdate(), 23)
- To get MM/DD/YYYY use SELECT CONVERT(varchar, getdate(), 1)
- 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 # | Query | Sample |
---|---|---|
1 | select convert(varchar, getdate(), 1) | 12/30/06 |
2 | select convert(varchar, getdate(), 2) | 06. 12.30 |
3 | select convert(varchar, getdate(), 3) | 30/12/06 |
4 | select convert(varchar, getdate(), 4) | 30.12.06 |
5 | select convert(varchar, getdate(), 5) | 30-12-06 |
6 | select convert(varchar, getdate(), 6) | 30 Dec 06 |
7 | select convert(varchar, getdate(), 7) | Dec 30, 06 |
10 | select convert(varchar, getdate(), 10) | 12-30-06 |
11 | select convert(varchar, getdate(), 11) | 06/12/30 |
12 | select convert(varchar, getdate(), 12) | 061230 |
23 | select convert(varchar, getdate(), 23) | 2006-12-30 |
101 | select convert(varchar, getdate(), 101) | 12/30/2006 |
102 | select convert(varchar, getdate(), 102) | 2006.12.30 |
103 | select convert(varchar, getdate(), 103) | 30/12/2006 |
104 | select convert(varchar, getdate(), 104) | 30. 12.2006 |
105 | select convert(varchar, getdate(), 105) | 30-12-2006 |
106 | select convert(varchar, getdate(), 106) | 30 Dec 2006 |
107 | select convert(varchar, getdate(), 107) | Dec 30, 2006 |
110 | select convert(varchar, getdate(), 110) | 12-30-2006 |
111 | select convert(varchar, getdate(), 111) | 2006/12/30 |
112 | select convert(varchar, getdate(), 112) | 20061230 |
TIME ONLY FORMATS | ||
8 | select convert(varchar, getdate(), 8) | 00:38:54 |
14 | select convert(varchar, getdate(), 14) | 00:38:54:840 |
24 | select convert(varchar, getdate(), 24) | 00:38:54 |
108 | select convert(varchar, getdate(), 108) | 00:38:54 |
114 | select convert(varchar, getdate(), 114) | 00:38:54:840 |
DATE & TIME FORMATS | ||
select convert(varchar, getdate(), 0) | Dec 12 2006 12:38AM | |
9 | select convert(varchar, getdate(), 9) | Dec 30 2006 12:38:54:840AM |
13 | select convert(varchar, getdate(), 13) | 30 Dec 2006 00:38:54:840AM |
20 | select convert(varchar, getdate(), 20) | 2006-12-30 00:38:54 |
21 | select convert(varchar, getdate(), 21) | 2006-12-30 00:38:54. 840 |
22 | select convert(varchar, getdate(), 22) | 12/30/06 12:38:54 AM |
25 | select convert(varchar, getdate(), 25) | 2006-12-30 00:38:54.840 |
100 | select convert(varchar, getdate(), 100) | Dec 30 2006 12:38AM |
109 | select convert(varchar, getdate(), 109) | Dec 30 2006 12:38:54:840AM |
113 | select convert(varchar, getdate(), 113) | 30 Dec 2006 00:38:54:840 |
120 | select convert(varchar, getdate(), 120) | 2006-12-30 00:38:54 |
121 | select convert(varchar, getdate(), 121) | 2006-12-30 00:38:54.840 |
126 | select convert(varchar, getdate(), 126) | 2006-12-30T00:38:54.840 |
127 | select convert(varchar, getdate(), 127) | 2006-12-30T00:38:54.840 |
ISLAMIC CALENDAR DATES | ||
130 | select convert(nvarchar, getdate(), 130) | |
131 | select 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 statement | Output |
---|---|
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 | Выход | ||
Формат даты и времени как Стандартный : U.S.A. |
| |||
Формат даты и времени в формате Стандартный : ANSI |
| |||
Формат даты и времени в формате Стандартный : британский / французский |
| |||
Формат даты и времени в DD.Формат MM.YY Стандартный : немецкий |
| |||
Формат даты и времени в формате Стандартный : итальянский |
| |||
Формат даты и времени в формате Стандарт : сокращенное название месяца |
| |||
Формат даты и времени в формате Стандарт : сокращенное название месяца |
| |||
Формат даты и времени Стандарт : 24 часа в сутки |
| |||
Формат даты и времени как Стандарт : по умолчанию + миллисекунды |
| |||
Формат даты и времени в формате Стандарт : США |
| |||
Формат даты и времени в формате Стандарт : ЯПОНИЯ |
| |||
Формат даты и времени в формате Стандарт : ISO |
| |||
Формат даты и времени в формате Стандарт: Европа по умолчанию + миллисекунды |
| |||
Формат даты и времени в Стандарт: 24-часовое время с миллисекундами |
| |||
Формат даты и времени в формате По умолчанию: Канонический ODBC |
| |||
Формат даты и времени в формате Стандартный : канонический ODBC с миллисекундами |
| |||
Формат даты и времени в формате Стандарт : США с временем AM / PM |
| |||
Формат даты и времени в формате |
| |||
Формат даты и времени в формате |
| |||
Формат даты и времени в формате |
| |||
Формат даты и времени в формате Стандарт : По умолчанию |
| |||
Формат даты и времени в формате Стандарт : США |
| |||
Формат даты и времени в формате Стандарт : ANSI |
| |||
Формат даты и времени в формате Стандартный : британский / французский |
| |||
Формат даты и времени в формате Стандарт : немецкий |
| |||
Формат даты и времени в формате Стандартный : итальянский |
| |||
Формат даты и времени в формате Стандарт : сокращенное название месяца |
| |||
Формат даты и времени в формате Стандарт : сокращенное название месяца |
| |||
Формат даты и времени Стандарт : 24 часа в сутки |
| |||
Формат даты и времени как Стандарт : по умолчанию + миллисекунды |
| |||
Формат даты и времени в формате Стандарт: США |
| |||
Формат даты и времени в формате Стандарт : ЯПОНИЯ |
| |||
Формат даты и времени в формате Стандарт : ISO |
| |||
Формат даты и времени в формате Стандарт: Европа по умолчанию + миллисекунды |
| |||
Формат даты и времени в Стандарт: 24-часовое время с миллисекундами |
| |||
Формат даты и времени в формате По умолчанию: Канонический ODBC |
| |||
Формат даты и времени в формате Стандарт: Канонический ODBC с миллисекундами |
| |||
Формат даты и времени в формате Стандарт : ISO8601 |
| |||
Формат даты и времени в формате Стандарт : дата по исламу / хиджре |
|
|
Шпаргалка по формату даты 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-сервера, посетите:
- Пользовательский формат даты и времени
- Стандартный формат даты и времени
Формат 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.