2012-03-02 71 views
2

我試圖完成似乎很簡單的事情,但我無法找到解決方案 - 我可能會錯誤地使用它。在插入時連接兩個值 - SQL

我有第三方軟件輸出日期和時間作爲兩個單獨的值,一個日期和另一個時間,我需要能夠INSERT數據作爲一個datetime字段到SQL中。

的第三方軟件是建立在基於.NET的專用語言,並使用SQL Server 2005的

以下是在軟件我的兩個值:

let cbdate1 = cbdate 
let cbtime1 = cbhr & ":" & cbmn & ":00 " & ampm 

然後是SQL會去作爲:

DOSQL "INSERT INTO Leads (DateTimeField) VALUES (cbdate1 + ' ' + cbtime1)" 

所以基本上,我試圖加入表中插入兩個值。這是行不通的,我無法指示自己找到合適的答案。

附加信息:

日期(cbdate1)是作爲 「MM/DD/YYYY」,時間爲簡單的加入爲提出 「HH:MM:00 AM」

+0

你是什麼數據庫平臺,什麼是錯誤信息,什麼是連接字符串'cbdate1 +「」 + cbtime1'是什麼樣子? – RedFilter 2012-03-02 14:53:37

+2

使用參數化查詢而不是連接SQL。 – Oded 2012-03-02 14:53:38

回答

6

您當前正在使用雙引號,而應該使用單引號,因爲這是SQL中的有效字符串。

DOSQL "INSERT INTO Leads (DateTimeField) VALUES (cbdate1 + ' ' + cbtime1)" 

編輯:

現在,如果你得到進一步的問題,這可能是因爲您DateTimeField是一個datetime數據類型。現在,您可以在連接轉換之後或將字符串轉換爲correct format

像:

DOSQL "INSERT INTO Leads (DateTimeField) VALUES (Convert(datetime, cbdate1 + ' ' + cbtime1))" 

編輯#2:

沒有你需要一個星期一DD yyyy格式的前24小時的部分:10月22日2012年。否則,你可能需要嘗試將時間部分變爲24小時格式。

+0

我編輯了問題中的語句,它是我正在使用的代碼中的單引號。我只是輸入錯誤。 – RogueSpear00 2012-03-02 14:59:45

+0

@ RogueSpear00修復了我的答案。 – 2012-03-02 15:02:42

+0

數據類型是datetime,我也沒有把它放在我原來的問題中,哈哈。我在這裏打擊1000錯誤! – RogueSpear00 2012-03-02 15:04:58

0

加入日期和時間值一起放在源代碼中,然後將單個值插入數據庫。你沒有說你正在使用什麼編程語言,所以我不能告訴你如何做到這一點。但是,在VB6和任何.NET語言中執行操作很簡單。

+0

這是我嘗試的第一件事。不幸的是,由於某些奇怪的原因,我試圖在插入之前加入兩個變量,腳本在連接上拋出一個錯誤。 – RogueSpear00 2012-03-02 14:58:59

0

你需要做的是將字符串合併在一起,然後投射爲日期時間類型。確保字符串格式正確。 (即01-01-01,01/01/01等)

INSERT INTO LEADS (DateTimeField) VALUES (CAST((cbdate1 + ' ' + cbtime1) as datetime) 

根據你想要的,請參考msdn的輸出格式。

http://msdn.microsoft.com/en-us/library/aa226054(v=sql.80).aspx

+1

'01/01/01'不是一個非常合適的格式。 「2001-01-01」或「20010101」是。 – 2012-03-02 15:05:46

+1

是否合適,它仍然有效;) – ImGreg 2012-03-02 15:08:03