是否可以将字符串列转换为sql server中的日期时间?



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

1,亚历克斯,093013
2,彼得,012512
3,玛丽,041911
...

我希望能够选择REGISTRATION_DT列并将值返回为DATETIME。是否有任何查询将REGISTRATION_DT列中的现有varchar数据类型转换为日期时间,并将所有值转换为日期时间格式?现有的varchar值是ddmyy格式的。

我用的是sql server 2008

下面的示例要求年份始终为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

唯一的方法是将varchar转换为日期。试试

SELECT CONVERT(DATE, LEFT(REGISTRATION_DT, 2) + '/'  
                       + LEFT(RIGHT(REGISTRATION_DT, 4), 2)
                       + '/20' + RIGHT(REGISTRATION_DT, 2))

一个示例SQL FIDDLE在这里。

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

Try This…

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

相关内容

  • 没有找到相关文章

最新更新