有没有办法查询 SQLServer 2005 当前与 T-SQL 一起使用的当前 DATEFORMAT?
我有一个应用程序,可以读取预生成的 INSERT 语句并针对数据库执行它们。为了使要插入的数据独立于区域性,我存储以不变区域性表示的日期时间值 (月/日/年...) 。数据库服务器可能在不同的区域设置下运行,具体取决于系统区域设置(可能使用日/月/年),因此插入可能会因为无法解析日期时间而崩溃。
我知道 T-SQL 中有“SET LANGUAGE”和“SET DATEFORMAT”语句来设置要使用的区域设置。
我不想使这些更改永久化(它们是永久的吗?),所以我正在寻找一种从数据库读取 DATEFORMAT 的方法,存储它,根据我的喜好更改格式,然后将其重置为存储的值数据已插入。
有什么想法可以在服务器中找到该值吗?
最佳答案
以下语句将使用给定的日期格式(@dateFormat 变量)执行日期解析操作,然后重新启用原始日期格式。
declare @dateFormat nvarchar(3);
set @dateFormat = 'dmy';
declare @originalDateFormat nvarchar(3);
select @originalDateFormat = date_format from sys.dm_exec_sessions where session_id = @@spid;
set dateformat @dateFormat;
--Returns 1.
select isdate('31/12/2010');
set dateformat @originalDateFormat;
请注意,日期格式更改仅适用于当前连接。重新启用原始日期格式只是为了确保在同一连接上执行的后续语句不受此更改的影响。
关于sql - 在 SQL Server 2005 中设置和重置日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/305462/