гггг-мм-дд чч: мм: сс.ссс в ддммый в процедурах SQL Server - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь преобразовать yyyy-mm-dd hh:mm:ss.sss в ddmmyy в хранимой процедуре SQL Server, но не могу этого сделать.Может кто-нибудь разобраться с этой штукой?

и тоже нужно (27-апр-18) в этом формате тоже?

Ответы [ 5 ]

0 голосов
/ 26 апреля 2018

OrderDate является переменной.

concat (месяц (OrderDate), DAY (OrderDate), вправо (YEAR (OrderDate), 2)) как дата

0 голосов
/ 26 апреля 2018

Просто используйте

SELECT FORMAT(GETDATE(),'ddMMyy')
0 голосов
/ 26 апреля 2018

Обновление

Если у вас есть значение типа Date, чтобы получить формат dd-MMM-yy, вы также можете использовать комбинацию convert и replace:

DECLARE @Date as datetime = GETDATE();

SELECT  @Date As Original, 
        REPLACE(CONVERT(char(9), @Date, 6), ' ', '-') As Result

Будет возвращено:

Original                Result
01.05.2018 08:08:29     01-May-18

Примечание: Я обновил свой ответ из-за изменения желаемого формата результата с mmddyyy на ddmmyy - Все, что я изменил, это стиль конвертации - от 1 до 3.

Исходный ответ

Если исходное значение имеет тип DateTime, оно не имеетотображаемое значение.Все, что вам нужно использовать, это convert и replace:

DECLARE @Date as datetime = GETDATE();

SELECT  @Date As Original, 
        REPLACE(CONVERT(char(8), @Date, 3), '/', '') As Result

Original                Result
26.04.2018 06:56:19     042618

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

DECLARE @StringDate as char(23) = '2018-04-26 07:55:43.003'

SELECT @StringDate As Original,  
       REPLACE(CONVERT(char(8), CONVERT(datetime, @StringDate, 120), 3), '/', '') As Result

Original                    Result
2018-04-26 07:55:43.003     042618

В Sql Server 2012 или более поздней версии вы можете использовать Format для преобразования datetime в любое желаемое строковое представление, ноFormat медленнее, чем convert и replace, поэтому, если вы используете его на большом столе, вам следует подумать об использовании старого доброго convert.
Для получения дополнительной информации прочитайте Аарона Бертранда.ФОРМАТ () хорош и все, но…

0 голосов
/ 26 апреля 2018

Попробуйте это.

Replace(CONVERT(VARCHAR(10),CreatedOn,10),'-','')

В этой строке выше CreatedOn - имя столбца.

0 голосов
/ 26 апреля 2018

Попробуйте:

SELECT FORMAT(CONVERT(DATETIME,'yyyy-mm-dd hh:mm:ss.sss'), 'ddMMyy')

ИЛИ

SELECT FORMAT(CONVERT(DATETIME,column_name), 'ddMMyy')

Пример:

SELECT FORMAT(CONVERT(DATETIME,'2018-04-26 10:20:12.222'), 'ddMMyy')

ВЫВОД:

260418

Демо:

http://sqlfiddle.com/#!18/4d22b/36

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...