2014-10-08 24 views
2

出於某種原因,下面的查詢返回相同的結果,即使他們不應該的SQL Server 2014故障與轉換功能

SELECT CONVERT(DATE, GETDATE(),101) 
SELECT CONVERT(DATE, GETDATE(),102) 
SELECT CONVERT(DATE, GETDATE(),103) 
SELECT CONVERT(DATE, GETDATE(),104) 
SELECT CONVERT(DATE, GETDATE(),105)-- Ad Infinitum (Tested up to 140) 

結果

2014-10-07 

萬一今天的日期是7十月2014

技術上我在美國英語安裝了SQL Server 2014和嘗試使用

set dateformat dmy 

去改變它,但我不知道它是否取得了差或沒有。

我搞砸了我的安裝,我應該修復它,卸載並重新安裝,完全格式化我的機器還是不相關。

發佈第一個問題,我相信我遵循規則,因爲我理解他們,如果我犯了一個錯誤,請告訴我。

編輯:

SELECT CAST (GETDATE() AS DATE) 

具有相同的效果。

+0

OK - 但你不能說什麼你** **尋找的 - 什麼輸出你* *想要**?你有沒有看過SQL Server 2014新的['FORMAT'](http://msdn.microsoft.com/en-us/library/hh213505.aspx)函數? – 2014-10-08 05:14:39

+0

我猜你已經誤解了日期(和日期時間)如何存儲在SQL Server(以及幾乎任何其他編程語言) - 他們沒有附加到他們的某種格式信息 - 他們只是日期信息。您看到的*字符串*是當您要求工具(如管理工作室)*顯示*日期信息時發生的情況。但是不要混淆管理工作室應用的字符串格式與存儲在「日期」列或變量中的實際* data *。 – 2014-10-08 06:56:45

+0

如果我不夠清楚,我很抱歉,我的目標是獲得除了我所得到的結果之外的任何結果,謝謝您指出我的錯誤。 – 2014-10-08 06:59:38

回答

1

樣式只在輸出類型是文字樣式時才重要,即varcharnvarchar。你要做的是將datetime轉換爲日期(結果不依賴於樣式),然後允許客戶端應用程序顯示它,但它喜歡。

在下面的例子中,然而,差異是明顯:

select convert(varchar, cast(getdate() as date), 101); 
select convert(varchar, cast(getdate() as date), 102); 
select convert(varchar, cast(getdate() as date), 103); 
select convert(varchar, cast(getdate() as date), 104); 
1

您需要CONVERT函數使用VARCHAR代替DATE的。如下圖所示:

SELECT CONVERT(varchar, GETDATE(),101) 
SELECT CONVERT(varchar, GETDATE(),102) 
SELECT CONVERT(varchar, GETDATE(),103) 
SELECT CONVERT(varchar, GETDATE(),104) 
SELECT CONVERT(varchar, GETDATE(),105) 

此外,檢查出下面的鏈接是相同的: Convert Date format into DD/MMM/YYYY format in SQL Server