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

6
如果您想在Sql Server中将日期格式设置为某种样式,例如ddMMyyyy,可以使用以下语句:
SET DATEFORMAT dmy

我的问题是如何事先知道这是设置的格式?
我正在编写的程序需要确定上述是否为实际datetimeformat,否则设置并继续执行其余部分。
这种可能性有多大?还是我的唯一方法是将其设置为所需的格式并继续执行?
我希望设置这个不会影响其他会话(连接)?

1
使用 DBCC useroptions 来检查日期格式。Set DATEFORMAT 只会影响当前会话。 - praveen
@praveen 谢谢,这很有帮助。请输入您的答案。 :) - deostroll
最好编写不依赖于任何特定日期格式的代码。 - Damien_The_Unbeliever
5个回答

18

检查日期格式,请使用

DBCC useroptions

SET DATEFORMAT 只会影响当前会话

MSDN 链接


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)

2

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

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

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


1

-1

你应该使用转换函数将日期时间转换为所需的格式,

尝试这样做:

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

或者

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

您可以在以下链接中获取更多信息: http://msdn.microsoft.com/en-us/library/ms187928.aspx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接