是否可以在sql server中将字符串列转换为datetime?

时间:2014-03-27 17:22:22

标签: sql sql-server datetime

我有一个表CUSTOMERS(ID,NAME,REGISTRATION_DT)。它具有以下值 -

1,Alex,093013
2,彼得,012512
3,玛丽,041911
。 。

我希望能够选择REGISTRATION_DT列,并将值重新设置为DATETIME。是否有任何查询将REGISTRATION_DT列中的现有varchar数据类型转换为datetime并且所有值都采用datetime格式?现有的varchar值采用ddmmyy格式。

我正在使用sql-server 2008

3 个答案:

答案 0 :(得分:1)

以下示例要求年份始终为2000年。您还需要将字符串YourTable更改为要查询的表格。

SELECT
      Id
     ,Name
     --Convert To Date Time
     ,CONVERT(datetime,
                -- Add 20 to the final 2 numbers to represent the year i.e 2013
                ('20' + SUBSTRING(REGISTRATION_DT,5,2)
                    + '-' + 
                -- the first 2 numbers to represent the Month i.e 09
                SUBSTRING(REGISTRATION_DT,1,2)
                    + '-' + 
                -- the middle 2 numbers to represent the day i.e 30
                SUBSTRING(REGISTRATION_DT,3,2))) 
     as REGISTRATION_DT
from YourTable

答案 1 :(得分:0)

唯一的方法是将varchar转换为date。尝试像

这样的东西
SELECT CONVERT(DATE, LEFT(REGISTRATION_DT, 2) + '/'  
                       + LEFT(RIGHT(REGISTRATION_DT, 4), 2)
                       + '/20' + RIGHT(REGISTRATION_DT, 2))

这里有一个例子SQL FIDDLE

更重要的是,您必须考虑更改保存表格中REGISTRATION_DT字段的方式。

答案 2 :(得分:0)

试试这个...

select ID, NAME ,CAST((substring(REGISTRATION_DT,5,6)+
substring(REGISTRATION_DT,1,4)) as datetime) 
as Registration_Date  from CUSTOMERS

例如:http://sqlfiddle.com/#!3/d41d8/32154/0