更新sqland中的日期格式,将两个字段合并为一个

时间:2016-03-07 10:15:21

标签: sql sql-server sql-server-2008

我收到了朋友的约会,但我需要将其更改为我的表格结构。

已收到数据。

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,Level 16,State 3,Line 1 varchar数据的转换   键入日期时间数据类型会导致超出范围的值。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

我使用了substring,因为你的样本是'01Apr1978:00:00:0'