将varchar(ddmmyyyy)转换为日期格式

伊坦

如何将例如varchar(8)的ddmmyyyy转换为日期格式(dd / mm / yyyy)?

我有一个接受日期varchar(8)参数的存储过程。

我想将其转换为日期格式,然后再插入数据库。我尝试使用

INSERT INTO mytable(createdDate) VALUES (CONVERT(date, CONVERT(varchar(8), @date), 106));

一个错误:

Conversion failed when converting date and/or time from character string.

createdDate列的类型为:日期

所罗门·鲁兹基(Solomon Rutzky)

ddmmyyyy不是有效的日期格式。您首先需要将该字符串转换为可以解析为DATE/的字符串DATETIME最快的方法可能是SUBSTRING将片段简单地转换为一种mm/dd/yyyy格式。确实可以成功转换。但是你有一个VARCHAR(8)因此,您需要将其增加为VARCHAR(10)(或者更好CHAR(10)),或者声明一个局部变量来保存更改后的值。

例如:

DECLARE @Date VARCHAR(8); -- input parameter
SET @Date = '25032014';

DECLARE @Date2 CHAR(10);
SET @Date2 = SUBSTRING(@Date, 3, 2)
             + '/' + SUBSTRING(@Date, 1, 2)
             + '/' + SUBSTRING(@Date, 5, 4);

SELECT @Date2, CONVERT(DATE, @Date2);
-- 03/25/2014     2014-03-25

编辑:实际上,我发现了一种稍微简单的方法。我从这种方法开始,但意识到与ddmmyyyy相对,它不起作用mmddyyyy我莫名其妙地错过了一个适合的日期样式编号dd/mm/yyyy因此,只需在输入的字符串中添加两个斜杠然后进行调用即可CONVERT,但前提是您将其103用作“样式”。和类似的第一溶液,它需要要么改变传入的参数是VARCHAR(10)CHAR(10)代替VARCHAR(8),或者创建一个局部变量是CHAR(10)

DECLARE @Date VARCHAR(8); -- input parameter
SET @Date = '25032014';

DECLARE @Date2 CHAR(10);
SET @Date2 = STUFF(STUFF(@Date, 3, 0, '/'), 6, 0, '/');

SELECT @Date2, CONVERT(DATE, @Date2, 103); -- 103 = dd/mm/yyyy
-- 25/03/2014     2014-03-25

可以在MSDN页面上找到CAST和CONVERT的转换“样式”

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章