Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Sql server 2008 如何将日期的varchar(6)转换为char(8)_Sql Server 2008_Datetime - Fatal编程技术网

Sql server 2008 如何将日期的varchar(6)转换为char(8)

Sql server 2008 如何将日期的varchar(6)转换为char(8),sql-server-2008,datetime,Sql Server 2008,Datetime,如何将varchar(6)转换为char(8)的日期时间?例如,我需要将022814转换为02/28/14。此外,由于第一个“日期”定义为varchar(6),因此22814也有效。因此,我应该能够将22814转换为2014年2月28日 我试过了 select convert(char(8), '022814', 1) 但是它返回了022814而不是02/28/14。然而 select convert(char(8), getdate(), 1)) 将返回正确的格式04/25/14。我不知

如何将
varchar(6)
转换为
char(8)
的日期时间?例如,我需要将
022814
转换为
02/28/14
。此外,由于第一个“日期”定义为
varchar(6)
,因此22814也有效。因此,我应该能够将22814转换为2014年2月28日

我试过了

select convert(char(8), '022814', 1)
但是它返回了
022814
而不是
02/28/14
。然而

select convert(char(8), getdate(), 1)) 
将返回正确的格式
04/25/14
。我不知道为什么


所以我想也许我可以先把“022814”转换成datetime。但我得到了一个错误“将char数据类型转换为datetime数据类型导致datetime值超出范围”。有人能给我一些想法吗?

这并不容易,但你可以按照以下思路做一些事情:

SET DATEFORMAT MDY

DECLARE @DateString VARCHAR(6)
SET @DateString = '022814'

SELECT CONVERT(DATETIME, SUBSTRING(@DateString,1,2) + '/' + SUBSTRING(@DateString,3,2) + '/' + SUBSTRING(@DateString,5,2))
-您应该始终使用最合适的数据类型——毕竟,这就是它们的用途!不要将日期相关信息存储在字符串中!为此,请使用
DATE
DATETIME2(n)