2016-03-07 2 views
0

Я получил дату от друга, но мне нужно изменить его на строку с моей табличной структурой.Обновление формата даты в sqland, объединяющем два поля в один

Данные получены.

Initial,Surname, Date_of_birth  ,  Accno 
AD  ,Halute , 01Apr1978:00:00:00 ,  1111111111 

Мой стол

Surname & Initial, Date_of_Birth, Accno 
Halute AD  , 01/04/1978 , 111111111 

Вопрос в том, как я могу идти о преобразовании новых данных, чтобы посмотреть, как у меня

Я попытался ниже запрос, я получил сообщение об ошибке ,

SELECT 
    surname+' '+INITIALS as 'Surname & Initial' 
    ,CONVERT(VARCHAR(20), CONVERT(DATETIME, STUFF(Date_of_Birth, CHARINDEX(':', Date_of_Birth), 1, ' '), 100), 103) AS Date_of_Birth 
    ,Accno 
FROM BackScanning 

Msg 242, уровень 16, состояние 3, строка 1 Превращение данных VARCHAR типа к типу DateTime данных привело к значению вне-диапазона.

+1

Было бы замечательно, если бы вы можете поместить DDL своей таблицы (My Table). Кроме того, «Полученные данные» находятся в csv, xls или что-то еще? – Elmer

+0

DDL полученных данных - это все Varchar (50) и My Table следующим образом Фамилия и исходный Nvarchar (50), Дата рождения Nvarchar (10), Accno Nvarchar 10 – user3309798

+0

1. Не используйте комментарии для добавления сведений, вместо этого, отредактируйте свой вопрос. 2. ** Всегда ** используйте правильные типы данных - никогда не сохраняйте значения даты как char, varchar и т. Д., Используя тип данных даты. –

ответ

1

Я думаю, это то, что вы хотите.

SELECT 'Halute' + ' AD' AS Surname_Initial, 
     CONVERT(VARCHAR(20), CONVERT(DATETIME, '01Apr1978 00:00:00',100), 103) AS Date_of_Birth, 
     '111111111' AS Accno 

Вышеуказанный запрос дает вам одиночные записи. Чтобы выбрать из таблицы, он хотел бы это -

SELECT 
    Surname_Initial 
    ,CONVERT(VARCHAR(20), CONVERT(DATETIME, STUFF(Date_of_Birth, CHARINDEX(':', Date_of_Birth), 1, ' '), 100), 103) AS Date_of_Birth 
    ,Accno 
FROM YourTable 
+0

Hi @Krishnraj Rana, у меня есть около 9 миллионов записей, которые нужно обновить? – user3309798

+0

@ user3309798: Вы попробовали мой запрос, указав фактическое имя столбца? –

+0

Я сделал это, просто дал мне следующее: «SurnameInitial, 01/04/2016,11111111111» для всех записей – user3309798

1

create table #temp (col01 varchar(50), dob date);

with cte as (
SELECT 'AD' AS INITIAL 
     ,'Halute' as SURNAME 
     ,'01Apr1978:00:00:0' as date_of_birth 
) 
insert into #temp (col01, dob) 
select surname+' '+initial as 'Surname & Initial' 
    ,CONVERT(date,substring(date_of_birth,1,9)) 
    --,date_of_birth 
from cte 

Я использовал подстроку в качестве образца '01Apr1978: 00: 00: 0'

Смежные вопросы