Как вставить дату в SQL Server из любого формата в формат даты и времени? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть требование, где мне нужно вставить дату из любого формата, например, мм / дд / гггг, дд / мм / гггг, гггг / мм / дд, дд-мм-гггг в формат даты / времени гггг-мм-дд.как это сделать?

Это то, что я пытался:

declare @date nvarchar(20)
set @date='2018/10/20'
SELECT case when @date=FORMAT(convert(date, @date, 105),'dd-MM-yyyy') 
then (select convert(datetime,convert(date, @date, 105), 105)) 
when @date= FORMAT(convert(date, @date, 103),'dd/MM/yyyy') 
then (select convert(datetime,convert(date, @date, 103), 103))
when @date= FORMAT(convert(date, @date, 110),'MM-dd-yyyy')
then (select convert(datetime,convert(date, @date, 110), 110))
when @date= FORMAT(convert(date, @date, 101),'MM/dd/yyyy')
then (select convert(datetime,convert(date, @date, 101), 101))
when @date= FORMAT(convert(date, @date, 23),'yyyy-MM-dd')
then (select convert(datetime,convert(date, @date, 23), 23))
when @date= FORMAT(convert(date, @date, 111),'yyyy/MM/dd')
then (select convert(datetime,convert(date, @date, 111), 111))
end

, но это не удалось при преобразовании '2018/10/20' в 'dd/mm/yyyy' и других не относящихся к делу форматов, которые используются в операторе case, кроме 'yyyy/MM/dd'.

1 Ответ

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

CAST и CONVERT

DECLARE
  @txt1 varchar(10)='12/05/2019', -- mm/dd/yyyy
  @txt2 varchar(10)='05/12/2019', -- dd/mm/yyyy
  @txt3 varchar(10)='2019/12/05', -- yyyy/mm/dd
  @txt4 varchar(10)='05-12-2019' -- dd-mm-yyyy

SELECT
  CONVERT(date,@txt1,101) -- mm/dd/yyyy
  ,CONVERT(date,REPLACE(@txt2,'/','.'),103) -- dd/mm/yyyy
  ,CONVERT(date,@txt3,111) -- yyyy/mm/dd
  ,CONVERT(date,@txt4,105) -- dd-mm-yyyy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...