在我的测试数据库中,日期显示在DD / MM / YYYY格式。 通过显示我的意思是,当你右键单击Management Studio中,打开表,返回的数据显示在DD / MM / YYYY格式。
有趣的是,当我写T-SQL来检索记录,我必须输入MM / DD / YYYY格式重新回到正确的数据。 反正我有可以对准这一个DD / MM / YYYY格式?
在我的测试数据库中,日期显示在DD / MM / YYYY格式。 通过显示我的意思是,当你右键单击Management Studio中,打开表,返回的数据显示在DD / MM / YYYY格式。
有趣的是,当我写T-SQL来检索记录,我必须输入MM / DD / YYYY格式重新回到正确的数据。 反正我有可以对准这一个DD / MM / YYYY格式?
您可以使用设置语言要选择SQL Server 需要在查询日期格式(我认为管理Studio使用客户端计算机的区域设置为显示目的,不知道虽然)。 不过,我建议使用传递的参数值在查询语句中嵌入他们的来代替。 如果你使用的参数,你不会遇到任何问题。 一切都照顾。
set language us_english
declare @d datetime = '1929/12/18'
set language british
declare @d datetime = '1929/12/18' -- fails
若要更改服务器的默认语言:
declare @langid int = (select langid from syslanguages where name = 'british')
exec sp_configure 'default language', @langid
reconfigure with override
就个人而言,我总是用YYYY-MM-DD格式(或YYYYMMDD),因为它不是文化特有的,并且,好了,我想这吸引了我,因为它是“逻辑”(后跟特别是当时间)。
[编辑:我只是在谈论什么,我把我的SQL脚本,以确保兼容性,无论服务器设置的,而不是SQL Server的“显示”]
您可以设置每个indvidual的默认语言SQL Server登录 。 不太记得了,但这样的事情:
sp_defaultlanguage @loginame = 'LoginName', @language = 'Language'
如果您在DATETIME传递格式
dd MMM yyyy
例如
"11 JUL 2009"
有不舍月份和日期任何含糊之处,因此你永远不应该有问题
在几乎所有情况下,要解决这个问题的正确方法很简单,就是别把日期为字符串。 如果你在一个参数传递,或使用(类型)列值,则服务器的文本转换根本就不是一个因素。 除了避免在国际化的问题,这也降低了您的注入攻击面。 它可以节省一些CPU周期,也;-p
如果你正在使用EXEC
动态SQL,那么这应该同样可以通过参数化sp_ExecuteSQL
。
我尝试使用日期的ODBC规范形式尽可能{d“YYYY-MM-DD”}这样,我知道服务器如何将SQL解释。 它工作在TSQL就好了。
无论是添加到您的web.config文件:
</system.web>
<globalization culture="en-US" uiCulture="en-US" />
</system.web>
或者您可以添加在页面上这样一句话:
<%@ Page uiCulture="en-US" culture="en-US" %>
希望这有助于。