在SQL中把Varchar日期格式从yyyy-MM-dd转换为yyyyMMdd

1 人关注

我试图在SQL中把Varchar日期格式从yyy-MM-dd转换为yyyMMdd,我尝试了以下方法,但都没有成功。

Declare @doj VARCHAR(10)
Set @doj='2022-01-01'
Select convert (VARCHAR,@doj,112)
select format(@doj,'yyyyMMdd')

如果我将doj变量声明为日期,那么它就能按预期工作。如果doj是varchar,如何使它工作?

3 个评论
你为什么首先使用 varchar 来存储日期?至于为什么不工作,带有样式代码的 CONVERT 是用来从一个 (n)(var)char 转换到 其他东西 ,而 FORMAT 是用来从其他东西转换 一个 (n)(var)char 。当 "转换 "一个 (n)(var)char var)char到一个 (n)(var)char 时,两者都不起作用,因为没有什么可转换的;它们都已经是基于字符串的数据类型。
我同意@Larnu的观点,日期应该存储为date或datetime,但是,如果你想保持日期为varchar,你可以简单地使用REPLACE或者多走一步,将字段转换成日期(CAST、CONVERT或PARSE),然后使用FORMAT函数。
Stu
由于你是用字符串而不是日期开始的,所以你需要的是 replace(@doj,'-','')
sql-server
date
sql-server-2016
varchar
learner123
learner123
发布于 2022-03-29
1 个回答
Charlieface
Charlieface
发布于 2022-03-29
0 人赞同

你可以直接转换为 datetime ,然后再使用 明确的 style 数字转换回来。