2015-02-07 29 views
-2

insert into mytable values(1,'06 -06-2012');爲什麼我們在插入時在sql server中的單引號中包含日期?

爲什麼我們在單引號中包含日期?!!但是,在通過參數化的查詢?時,我們不會這麼做。

+0

可能是您需要與Microsoft交談 – 2015-02-07 16:03:15

+1

問題:編寫代碼的人是誰?答案:編譯器如果您需要日期或字符串文本,編譯器能夠理解的語法是它以一個單獨的開始和結束quote。參數以@符號開頭,所以編譯器知道它在內存中引用一個地方,而不是日期或字符串文字。這完全是關於語法和編譯器理解的。 – Jeremy 2015-02-07 17:33:40

回答

3

使用文字,SQL Server數據庫引擎在查詢執行期間將值解析爲本機格式。 datetime值被解析爲一個8字節的本地二進制表示。

參數值以本地二進制格式傳遞給SQL Server,因此不使用enclosurse。客戶端API根據聲明的參數數據類型轉換參數值,並使用TDS協議遠程過程調用將二進制值傳遞給SQL Server。 SQL Server根本不需要解析該值,但如果參數數據類型與查詢中所需的數據類型不匹配,仍可能需要轉換。

例如,如果您爲表格數據類型的日期時間傳遞字符串參數值'06 -12-2014',則SQL Server會根據會話DATEFORMAT設置將參數字符串值轉換爲日期時間(可以解釋'2014-06-12'或'2014-12-06。傳遞本地日期時間參數可以避免模糊的日期格式,因爲將值轉換爲本地二進制值的任務已經在客戶端上完成。

相關問題