Конвертировать datetime в sql server - PullRequest
3 голосов
/ 25 октября 2010

Как мне преобразовать формат даты и времени ниже

2010-10-25 11: 13: 36.700

в

25-Окт-2010 или 2010-10-25 00: 00: 00.000

Ответы [ 4 ]

5 голосов
/ 25 октября 2010

Чтобы получить «25 октября 2010»

Предполагается, что значение предоставляется в виде строки, а не типа данных DATETIME:

SELECT REPLACE(CONVERT(VARCHAR, CAST('2010-10-25 11:13:36.700' AS DATETIME), 106), ' ', '-')

См. Документацию CAST / CONVERT для других форматов, хотя запрашиваемый вами требует последующей обработки.

Для получения "2010-10-25 00: 00: 00.000"

Лучшее средство - использовать DATEADD & DATEDIFF:

SELECT DATEADD(d, DATEDIFF(dd, 0, '2010-10-25 11:13:36.700'), 0)

Ссылки:

Тестирование

WITH sample AS (
   SELECT CAST('2010-10-25 11:13:36.700' AS DATETIME) dt)
SELECT REPLACE(CONVERT(VARCHAR, s.dt, 106), ' ', '-') AS col1,
       DATEADD(d, DATEDIFF(dd, 0, s.dt), 0) AS col2
  FROM sample s

Возвращает:

col1          col2
-------------------------------------
25-Oct-2010   2010-10-25 00:00:00.000

Добавление

Поскольку вы используете SQL Server 2005, вы можете упростить форматирование даты, создав функцию SQLCLR, которая позволит вам использовать форматирование даты .NET.

2 голосов
/ 25 октября 2010

отметьте это

SELECT convert(VARCHAR, getdate(),106)

это даст вам 25 Oct 2010

И

SELECT REPLACE(convert(VARCHAR, getdate(),106), ' ' , '-')

это даст вам 25-Oct-2010

1 голос
/ 25 октября 2010

выберите CONVERT (NVARCHAR (20), getDATE (), 105)

1 голос
/ 25 октября 2010

Проверьте, может ли это вам помочь:

SELECT REPLACE(CONVERT(VARCHAR(11), GETDATE(), 106), ' ', '-') 

Вы можете получить дополнительную информацию Здесь

PD.Stackoverflow иногда может быть слишком зависимым, вы можете попробовать Google до

...