2014-01-24 72 views
0

如果你想設置的日期格式的一些風格說,DDMMYYYY,在SQL Server中,我們可以使用下面的語句:如何獲取當前會話的日期格式

SET DATEFORMAT dmy 

我的問題是前手是怎麼知道的這是設置的格式?

我正在編寫的程序需要確定,如果以上是實際的日期時間格式,否則設置它並繼續其餘的執行。

這怎麼可能?否則是我唯一的方法,將其設置爲我想要的格式並繼續執行?

我希望設置這不會影響其他會話(連接)?

+1

使用'DBCC useroptions'檢查的日期格式。 '設置DATEFORMAT'只會影響當前會話 – praveen

+0

@praveen謝謝你的幫助。請輸入你的答案。 :) – deostroll

+0

編寫不依賴於任何特定日期格式的代碼會更好,更好。 –

回答

1

要檢查日期格式,請使用

DBCC useroptions 

SET DATEFORMAT只會影響當前會話

MSDN Link

0

你應該轉換函數的日期時間轉換爲理想的格式,

試試這個:

SELECT convert(varchar(10),getdate(),103) 

OR

SELECT replace(convert(varchar(10),getdate(),103),'/','') 

喲可以獲得更多的信息: http://msdn.microsoft.com/en-us/library/ms187928.aspx

0

與SQL 2008開始,當前的日期格式設置可被SPID/SESSION_ID的dm_exec_requests動態管理視圖中確定:

SELECT r.date_format 
FROM master.sys.dm_exec_requests r 
WHERE r.session_id = @@SPID; 

Permissions:
如果用戶在服務器上具有VIEW SERVER STATE權限,則用戶能夠看到SQL Server實例上的所有正在執行的會話;否則,用戶只會看到當前會話。

0

下面的代碼,獲取當前會話dateformat,其設置和測試其是否工作

-- get the current session date_format 
select date_format 
from sys.dm_exec_sessions 
where session_id = @@spid 

-- set the dateformat for the current session 
set dateformat ymd 

-- this should work 
select cast('2017-08-13 16:31:31' as datetime)