Sql server 如何获取当前会话';日期格式

Sql server 如何获取当前会话';日期格式,sql-server,datetime,datetime-format,Sql Server,Datetime,Datetime Format,如果要在sql server中将dateformat设置为某种样式(例如ddMMyyyy),我们可以使用以下语句: SET DATEFORMAT dmy 我的问题是如何事先知道这是设置的格式 我正在编写的程序需要确定上面的是否是实际的datetimeformat,否则设置它并继续执行其余部分 这怎么可能?否则是我唯一的方法,将它设置为我想要的格式并继续执行 我希望此设置不会影响其他会话(连接)?您应该通过convert函数将datetime转换为所需的格式 试试这个: SELECT conve

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

SET DATEFORMAT dmy
我的问题是如何事先知道这是设置的格式

我正在编写的程序需要确定上面的是否是实际的datetimeformat,否则设置它并继续执行其余部分

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


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

您应该通过convert函数将datetime转换为所需的格式

试试这个:

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

您可以获得以下方面的更多信息:
要检查日期格式,请使用

DBCC useroptions
SET DATEFORMAT
将只影响当前会话


从SQL 2008开始,当前日期格式设置可以通过
dm\u exec\u请求中的SPID/session\u id来确定
动态管理视图:

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

如果用户在服务器上具有查看服务器状态权限,则可以查看SQL SERVER实例上所有正在执行的会话;否则,用户将只看到当前会话。

下面的代码,获取当前会话的日期格式,设置它并测试它是否工作

-- 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)

似乎没有全局@变量来显示DATEFORMAT。(?)

@@变量列表记录在此处:

根据这里的其他答案,, 可以使用:


使用
DBCC useroptions
检查日期格式<代码>设置日期格式只会影响当前session@praveen谢谢,这很有帮助。请输入您的答案。:)编写不依赖于任何特定日期格式的代码要好得多。
-- 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)
DBCC useroptions
select date_format
from sys.dm_exec_sessions
where session_id = @@spid