2015-07-22 87 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

相關問題