2013-05-02 89 views
0

我正在从访问数据库接收日期和时间字段,他们是单独的varchar字段。我正在将数据导入到sql数据库中。我想将数据显示为日期时间字段,但无法以正常方式获取数据格式。我想出了一个子字符串来格式化数据,但我有问题要么将其放入游标或循环中以获取所有数据来更新。我想先格式化我的导入表,然后再将它移到另一个sql表中。这里是我有格式化日期和时间的代码。任何帮助,将不胜感激。格式化日期和时间,因为他们没有收到日期时间

时间

declare @result varchar(10), @time varchar(6), @hour varchar(2), @min varchar(2), @sec varchar (2); 
Select @time = time_of_call from import 

Set @hour = substring(@time, 1, 2); 
Set @min = substring(@time, 3, 2); 
Set @sec = substring(@time, 5, 2); 

If @hour < '12' 
    Set @result = @hour + ':' + @min + ' AM'; 
else if @hour >= '12' 
    Set @result = @hour + ':' + @min + ' PM'; 

Select @result; 

日期

declare @result varchar(12), @date varchar(8), @year varchar(4), @month varchar(2), @day varchar(2); 
Select @date = date_of_call from import 

Set @year = substring(@date, 1, 4); 
Set @month = substring(@date, 5, 2); 
Set @day = substring(@date, 7, 2); 

Set @result = @month + '/' + @day + '/' + @year; 

Select @result 
+0

名单'time_of_call' – RichardTheKiwi 2013-05-02 20:19:11

回答

0
--- some sample data 
create table import (time_of_call varchar(6), date_of_call varchar(8)); 
insert into import values ('101112', '20121110'); 
insert into import values ('134526', '20130201'); 

--- the query 
select cast(date_of_call + ' ' + 
      substring(time_of_call, 1, 2) + ':' + 
      substring(time_of_call, 3, 2) + ':' + 
      substring(time_of_call, 5, 2) as datetime) AsDateTime, 
     cast(date_of_call + ' ' + 
      substring(time_of_call, 1, 2) + ':' + 
      substring(time_of_call, 3, 2) + ':' + 
      substring(time_of_call, 5, 2) as datetime) AsString 
from import; 

----------------------- ----------------------- 
AsDateTime    AsString 
----------------------- ----------------------- 
2012-11-10 10:11:12.000 2012-11-10 10:11:12.000 
2013-02-01 13:45:26.000 2013-02-01 13:45:26.000 
+0

由于一些样本数据,即伟大工程! – Kristen 2013-05-06 13:22:11