我有一个表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