如何获取当前会话的dateformat

时间:2014-01-24 07:50:05

标签: sql-server datetime datetime-format

如果你想将dateformat设置为某些样式,比如ddMMyyyy,在sql server中我们可以使用以下语句:

SET DATEFORMAT dmy

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

我写的程序需要确定,如果以上是实际的datetimeformat,否则设置它并继续执行其余的。

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

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

5 个答案:

答案 0 :(得分:2)

要检查日期格式,请使用

DBCC useroptions

SET DATEFORMAT只会影响当前会话

MSDN Link

答案 1 :(得分:0)

您应该通过转换函数

将日期时间转换为所需的格式

试试这个:

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

OR

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

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

答案 2 :(得分:0)

从SQL 2008开始,当前日期格式设置可由dm_exec_requests动态管理视图中的SPID / session_id确定:

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

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

答案 3 :(得分: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)

答案 4 :(得分:0)

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

@@变量列表记录在这里: https://docs.microsoft.com/en-us/sql/t-sql/functions/configuration-functions-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15

根据此处的其他答案, 可以使用:

DBCC useroptions

select date_format
from sys.dm_exec_sessions
where session_id = @@spid