Как конвертировать DateTime в VarChar - PullRequest
       107

Как конвертировать DateTime в VarChar

283 голосов
/ 16 сентября 2008

Я работаю над запросом в Sql Server 2005, где мне нужно преобразовать значение в переменной DateTime в переменную varchar в формате yyyy-mm-dd (без временной части). Как мне это сделать?

Ответы [ 21 ]

3 голосов
/ 06 июня 2011

Попробуйте:

select replace(convert(varchar, getdate(), 111),'/','-');

Подробнее о ms sql tips

2 голосов
/ 26 ноября 2018

Для SQL Server 2008+ Вы можете использовать CONVERT и FORMAT вместе.

Например, для отметки времени для европейского стиля (например, в Германии):

CONVERT(VARCHAR, FORMAT(GETDATE(), 'dd.MM.yyyy HH:mm:ss', 'de-DE'))
2 голосов
/ 10 июля 2017

Попробуйте этот SQL:

select REPLACE(CONVERT(VARCHAR(24),GETDATE(),103),'/','_') + '_'+ 
       REPLACE(CONVERT(VARCHAR(24),GETDATE(),114),':','_')
2 голосов
/ 11 января 2017

Вы можете конвертировать вашу дату во многих форматах, синтаксис прост в использовании:

CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' * )
CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016
  • Код является целым числом, здесь 3 - третье форматирование без столетия, если вы хотите, чтобы столетие просто изменило код на 103.

В вашем случае , я только что преобразовал и ограничил размер с помощью nvarchar (10) следующим образом:

CONVERT(NVARCHAR(10), MY_DATE_TIME, 120) => 2016-09-15

Подробнее на: http://www.w3schools.com/sql/func_convert.asp

Другое решение (если ваша дата является датой и временем) - это простое CAST :

CAST(MY_DATE_TIME as DATE) => 2016-09-15
2 голосов
/ 25 марта 2013

Вот как я это делаю: CONVERT(NVARCHAR(10), DATE1, 103) )

2 голосов
/ 12 августа 2011

В упомянутом ФП дата / время формат. Для меня часть времени мешает.
Я думаю, что немного чище удалить часть времени (путем приведения даты к дате) перед форматированием.

convert( varchar(10), convert( date, @yourDate ) , 111 )
1 голос
/ 23 ноября 2018
DECLARE @DateTime DATETIME
SET @DateTime = '2018-11-23 10:03:23'
SELECT CONVERT(VARCHAR(100),@DateTime,121 )
1 голос
/ 01 декабря 2014

Самый короткий и простой способ:

DECLARE @now AS DATETIME = GETDATE()

SELECT CONVERT(VARCHAR, @now, 23)
1 голос
/ 16 сентября 2008

Вы не сказали, какая база данных, но с помощью mysql можно легко получить дату из отметки времени (и преобразование типа varchar должно выполняться автоматически):

mysql> select date(now());
+-------------+
| date(now()) |
+-------------+
| 2008-09-16  | 
+-------------+
1 row in set (0.00 sec)
0 голосов
/ 29 апреля 2014
CONVERT(VARCHAR, GETDATE(), 23)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...