如何获取当前会话的日期格式

deo*_*oll 5 sql-server datetime datetime-format

如果要将日期格式设置为某种样式,例如 ddMMyyyy,在 sql server 中我们可以使用以下语句:

SET DATEFORMAT dmy
Run Code Online (Sandbox Code Playgroud)

我的问题是如何事先知道这是格式集?

我正在编写的程序需要确定以上是否是实际的日期时间格式,否则设置它并继续执行其余部分。

这怎么可能?否则是我唯一的方法,将其设置为我想要的格式并继续执行?

我希望设置它不会影响其他会话(连接)?

pra*_*een 14

要检查日期格式使用

DBCC useroptions
Run Code Online (Sandbox Code Playgroud)

SET DATEFORMAT 只会影响当前会话

MSDN链接


Mar*_*lli 5

下面的代码,获取当前会话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)
Run Code Online (Sandbox Code Playgroud)