我有以下问题。 我有一些日期格式为'15122019'的日期,我需要此格式为2019-12-15,我已经用以下方式解决了。
select convert (date, Stuff(Stuff('15122018',5,0,'.'),3,0,'.'),104)
真正的问题是,当日期类似于“ 3122019”时,由于长度较短,无法进行转换。还有另一种方法吗?我已经尝试解决了几个小时。还有一个问题,可以将该查询参数化吗?
答案 0 :(得分:3)
尝试一下:
DECLARE @date VARCHAR(20)
SET @date ='3122019'
IF(LEN(@date) = 8)
BEGIN
SET @date = Stuff(Stuff(@date,5,0,'.'),3,0,'.');
SELECT CONVERT(DATE, @date , 103);
END
ELSE IF(LEN(@date) = 7)
BEGIN
SET @date = Stuff(Stuff(@date,4,0,'.'),2,0,'.');
IF(ISDATE(@date)=1)
BEGIN
SELECT CONVERT(DATE, @date , 103);
END
ELSE
BEGIN
SET @date = Stuff(Stuff(@date,4,0,'.'),3,0,'.');
SELECT CONVERT(DATE, @date , 103);
END
END
ELSE IF(LEN(@date) = 6)
BEGIN
SET @date = Stuff(Stuff(@date,3,0,'.'),2,0,'.');
SELECT CONVERT(DATE, @date , 103);
END
答案 1 :(得分:0)
可以通过以下方式实现这种对话:
dd-mm-yyyy
dd-mm-yy
SQL:
-- input format: dmmyyyy
SELECT CONVERT(DATE, FORMAT(3012019, '##-##-####'), 105)
-- result: 2019-01-03
-- input format: dmmyy
SELECT CONVERT(DATE, FORMAT(30119, '##-##-##'), 05)
-- result: 2019-01-03
这对于单位(和两位数)的天数可以很好地工作,但是,确实需要两位数的月份
答案 2 :(得分:0)
您可以在左侧添加myProc
,并用CREATE PROCEDURE parseJSON
@DebriefName NVARCHAR(255),
@Version INT
AS
EXEC myProc @DebriefName, @Version; //Need to capture the result data in a temp table or something
// Parse the JSON data for each question item in temp table
GO;
取8个字符。像0
。它适用于15122018和3122018
right