2012-09-24 133 views
2

目前我有一个名为日期为varchar而不是日期时间的列。该格式目前是'sep12'。我怎样才能将它转换成日期类型? 我知道这是模板,但我不知道如何更改数字,因为我的当前格式为MMMYY。VARCHAR TO DATE

CAST (
    SUBSTRING(date, 3, 2) + '/' + 
    SUBSTRING(date, 1, 2) + '/' + 
    SUBSTRING(date, 5, 4) 
AS DATETIME) 

任何帮助将通过其订购像apr09,apr10日期字段订货时不胜感激

的时刻。 aug09,aug10,但我需要它在年份顺序

+0

您应该使用**独立于语言的**格式 - ISO-8601格式是最好的:'YYYYMMDD'(没有破折号或斜线或任何东西!) - 这可以在SQL Server中使用任何语言和/或日期格式设置可靠 –

回答

2

首先,以这种方式存储日期是一个可怕的想法。但是,如果你知道今年会一直开始20那么你可以使用这样的事情(见SQL Fiddle Demo):

declare @dt varchar(10) = 'Sep12' 

select convert(datetime, left(@dt, 3) + '01 20' + right(@dt, 2), 100) 

如果从表中提取数据:

select convert(datetime, left(yourDateField, 3) + '01 20' + right(yourDateField, 2), 100) 
from yourTable 
+0

我需要做什么这对于我所有的例子。例如jan10 feb10 etc – user1296762

+0

@ user1296762请参阅我的编辑,如果您想要从表格中提取数据,请将您的日期字段替换为@ dt变量。 – Taryn