Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQLServer2008中将字符串日期转换为有效的日期格式?_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

如何在SQLServer2008中将字符串日期转换为有效的日期格式?

如何在SQLServer2008中将字符串日期转换为有效的日期格式?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有yymmdd格式的字符串日期,例如150202 我想将此字符串转换为格式为yyyymmdd的有效日期,例如20150202 提前感谢。将字符串转换为datetime,然后使用它执行您想要的操作 declare @dt varchar(6) = '150213' select CONVERT(datetime, @dt, 112) 执行另一个CONVERT将其转换为yyyymmdd格式 SELECT CONVERT(VARCHAR(10), CONVERT(DATETIME, @dt, 1

我有
yymmdd
格式的字符串日期,例如
150202

我想将此字符串转换为格式为
yyyymmdd
的有效日期,例如
20150202


提前感谢。

将字符串转换为datetime,然后使用它执行您想要的操作

declare @dt varchar(6) = '150213'
select CONVERT(datetime, @dt, 112)

执行另一个
CONVERT
将其转换为
yyyymmdd
格式

SELECT CONVERT(VARCHAR(10), CONVERT(DATETIME, @dt, 112), 112)
希望这能奏效

select CONVERT(datetime, '150202', 112)
对于所有日期转换

而不是选择转换(日期时间,'150202',112) 最好使用“选择TRY_CONVERT(日期时间,'150202',112)”
使用try_convert时,如果出现任何错误,它将返回null;如果使用convert,当转换失败时,它将返回错误。

您将如何确定是2015年还是1915年?在询问之前,您是否进行了一些研究?测试了一些代码?这是一个非常常见的问题,您在SO中有很多示例。SQL Server
DATE
DATETIME2(n)
没有任何与它们相关的格式-它们通过键入日期以二进制形式存储,因为字符串是一种不好的做法。。你可以在这里读到更多:我同意@Deepshikha。如果您知道150202的意思是20150202,只需输入“20”和“150202”,然后将此字符串转换为日期格式,您测试了它吗
将varchar数据类型转换为datetime数据类型导致值超出范围。
@wewewesthemenace:对我来说效果很好(SQL Server 2014-美国英语)@wewewesthemenace,我改进了我的答案,我对字符串使用了“yyddmm”格式。这是‘yymmdd’now@marc_s,编辑前为
151302
@阿什,谢谢@mohan111,它以varchar的形式出现,输出为datetime,可以以多种格式显示