2017-03-09 53 views
0

我无法控制运行SQL Server的服务器,我被告知需要将日期设置设置为我的本地时区,这恰好是英国时区。在一系列服务器上测试日期时间设置/格式

其中一些设置为美国日期格式,将日期转换为月日年,而不是日日月。

有没有人有一个很好的方法来测试我所有的服务器的所有日期设置?

我在想每个服务器上都有一个名为'OneSlashThreeSlashTwentySeventeenMonth'的过程。这个程序会说明它认为哪个月份'1/3/2017'代表。

它可以将它们组合到一起报告March的服务器和报告一月份的服务器。

注意:此问题假定日期设置是在服务器级设置的,而不是数据库级。如果可以将它们设置为数据库级别,那么对每个服务器上的每个数据库进行测试就更有意义了。

让我可以运行的东西意味着我可以将它转发给照顾我们服务器的人,并请求集体改变设置。

感谢所有帮助。

+0

我不确定你想要完成什么,但也许你应该看看利用DAY(),MONTH()和YEAR()函数?在每台服务器上制作一个过程,让您将月份,月份和月份作为单独的列进行回溯?这样就不会混淆哪个是哪个。 –

+0

为什么?日期格式仅用于显示。 [Sql服务器不存储日期显示格式。](http://stackoverflow.com/questions/30032915/how-to-cast-the-datetime-to-time/30033028#30033028) 可以使用datetime或'mm- dd-yyyyThh:mm:ss.nnn'用于插入日期时间值的字符串,并且在选择日期时间值时,可以选择日期时间值或使用convert来选择所需的字符串格式。 –

回答

0

这个查询将返回的日期部分的顺序:

SELECT [dateformat] FROM sys.syslanguages WHERE [langid][email protected]@LANGID 

随便看看到sys.syslanguages来了解详情!

但说实话:这不应该是必要的。如果这是一个老问题(处理遗留系统),可能需要它,但是一般来说,只要必须将日期时间作为字符串传递,通常应该使用以保持文化/语言独立格式如果有可能的话,坚持一个不关心格式的输入值

Here's a related answer

And here's another one

0

我想具有调用的过程的, 'OneSlashThreeSlashTwentySeventeenMonth',其存在的每个服务器上。这个程序会说明它认为哪个月份'1/3/2017'代表。

它可以将它们组合到一起报告March的服务器和报告一月份的服务器。

+0

整个方法闻起来......你检查了我的答案吗?你为什么想要做一些非常复杂的事情?我的回答将会返回'dmy'或'mdy'或'ymd'立即告诉您默认演员如何解释您的字符串。但是 - 正如我的回答中所述 - 你正在解决一个你根本不应该拥有的问题! – Shnugo

+0

情况闻起来很好。该解决方案是一个报告:a)说服负责服务器的人员调查日期设置,b)帮助他们尽快解决问题。 c)如果他们默默地更新设置并拒绝所有的知识,那么让我自己放心。事情是,我们采用基于Excel的报告,日期以英国格式化的字符串提供,因此服务器的日期设置决定'1/3/2017'是否被解释为'3月1日'或'1月3日'。当字符串作为日期参数传递时,proc中的SET DATEFORMAT DMY不起作用。 –

相关问题