2015-07-22 86 views
0

我已阅读了Stackoverflow中的类似文章,但似乎无法使其适用于我的案例。在现有列中将数据类型Varchar转换为日期

我有名为(Date)的列,数据类型为varchar,整个列中的数据看起来像这样(1999-12-31-23-00-01),没有括号。

所以,而不是Varchar,我想要相同的值,但以日期时间格式。

这是我的表结构:

CREATE TABLE应用 (

[ID] [INT] IDENTITY(1,1)NOT NULL,

[日期] VARCHAR(50)NULL ,

[Inst.nr] [SMALLINT] NULL,

[创建者声母] VARCHAR NULL,

[AppOwner] VARCHAR NULL,

[状态] VARCHAR NULL,

[Serial.Nr] VARCHAR NULL,

[MAC.Addr] VARCHAR NULL,

[Dell.nr ] VARCHAR NULL,

[模型] VARCHAR NULL,

[说明] VARCHAR NULL,

[服务保证] [日期] NULL,

[购买] [日期] NULL, )

其实问题是不与结构,其从Excel文件中的一些旧的数据,这被导入到SQL数据库中。 在我现在在Varchar中的[Date]列中,此列中的数据看起来像这样1999-12-31-23-00-01

正如您所看到的,它看起来像日期时间格式,但它不会接受从varchar转换为DateTime

+0

“SAME输出”是指:在查询中? –

+0

认为您要求转换为datetime? – Eric

+0

smalldatetime是您需要实现它的数据类型。 NOT DATETIME数据类型。 – knkarthick24

回答

0

使用CONVERT功能在SQL Server中,转换成datetime后续˚F ormat类型120

SELECT CONVERT(DATETIME,SUBSTRING('(1999-12-31-23-00-01)',2,10) + ' ' + REPLACE(SUBSTRING('(1999-12-31-23-00-01)',13,8),'-',':'),120) 

希望得到这个帮助!

+0

你好Giau, 你的代码给了我同样的结果Eric的代码。它会在随机表中创建一个新列。你能告诉我怎么整列转换在我的表 预先感谢您 – Kalash

+0

卡拉什嗨,给我你的表结构 –

+0

你好Giau,我已经更新了帖子:) – Kalash

1

不知道你问的转化为datetime

SELECT 
    -- Convert using ISO date time yyyy-MM-dd hh:mm:ss 
    CONVERT(datetime, 
      LEFT(Date, 10) + ' ' + 
      REPLACE(RIGHT(Date, 8), '-', ':') 
     ) AS DateInDatetime 
FROM 
    (VALUES 
    -- assume format in yyyy-MM-dd-hh-mm-ss 
    ('1999-12-31-23-00-01') 
) t (Date) 

SQL Fiddle

+0

你好埃里克, 我跑你的命令,它在随机表中创建一个新的列。如何在我称为app的表中执行它。 哦,是的,我想它转换成datetime :) 预先感谢您 – Kalash

相关问题