概要:默认情况下,如果安装的不是 SQL Server 的本地化版本,则 SQL Server 的日期格式为英语(美国)日期格式 MM/DD/YY。在部署需要此功能的应用程序时,如果要确保对于使用该应用程序的所有平台和地区在使用和插入日期时采用相同的格式,则完全可以使用此设置。
然而,由于许多国家/地区使用 DD/MM/YY 日期格式,而不是使用英语(美国)默认的 MM/DD/YY 格式,因此有时必须采用 DD/MM/YY 日期格式。对于分布全球的国际性应用程序而言,这更是个问题。
更多信息
开发人员没有考虑日期格式,则应用程序向表中插入日期或在 WHERE 子句中使用无效日期时,会出现一些问题。例如,像 20/05/97这样的给定日期只有在日期格式为 DD/MM/YY 时才能有效处理。然而,像 12/05/97 这样的日期既可以用 DD/MM/YY 也可以用 MM/DD/YY 格式进行处理,这就可能导致日期使用错误。
一个可能的解决方案就是使用 ISO 标准格式向 SQLServer 发送日期时间数据,即“YYYYMMDD”(不含分隔符)。使用 ISO 格式较为“国际化”,并且不受默认语言影响。有关更多信息,请参见 SQL Server 联机丛书中的 CONVERT 函数。
另外一个解决方案是为客户端应用程序检查 SQL Server 上使用的日期格式,以确保执行时传递的日期格式有效。
SQL Server 允许通过添加其他语言来设置日期格式和其他语言设置。仅在 Windows NT 控制面板中将区域设置设置为本地区域日期格式并不能有助于为 SQL Server 使用 DD/MM/YY 日期格式。
要使用 DD/MM/YY 格式,请采用以下任一方法:
每次连接时使用 SET 语句: SET DATEFIRST <number>
将首个工作日设置为 1 到 7 之间的一个数。英语(美国)默认为 7 (Sunday)。
SET DATEFORMAT <format>
为输入的日期时间数据或短格式日期时间数据设置日期部分(月/日/年)的顺序。有效参数包括 mdy、dmy、ymd、ydm、myd 和 dym。英语(美国)默认为mdy。
此方法允许对发送到 SQL Server 的日期使用d/m/y 日期格式,但要受连接影响。如果建立了到 SQL Server 的新连接,或停止并重新启动服务器,则日期格式将恢复为 m/d/y。
设置 SQL Server 上的语言
若要设置服务器上的语言,必须使用sp_addlanguage 添加语言。下面的示例将语言设置为英语(英国),并将日期格式设置为DD/MM/YY。该示例还可以应用于其他国家/地区,但可能需要修改 sp_addlanguage 的参数。
exec sp_addlanguage 'British','English',
'January,February,March,April,May,June,July,August,September,October,
November,December',
'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec',
'Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday',
dmy,1
sp_configure 'default language',1
reconfigure with override
在安装了其他语言之后,若要将默认语言重新设置为英语(美国),请使用以下 SQL 语句:
s
p_configure 'default language',0
reconfigure with override
要检查服务器上已经安装的默认语言,请使用以下SQL 命令:sp_configure 'default language'
如果结果值为 0,则默认语言为英语(美国)。如果结果不为 0,请运行以下 SQL 命令查找已安装的默认语言设置和使用的日期格式:
select name ,alias, dateformat
from syslanguages
where langid =
(select value frommaster..sysconfigures
where comment = 'defaultlanguage')
文件。