6

任何人都可以帮忙,我们安装了一个 sql server 2005 数据库(实际上它是一个连接到 sql server 2005 服务器的 sql server 2000),默认服务器语言语言 USA 具有像 mm/dd/yy 这样的日期格式,我们真的需要保留它方式,但目前刚刚将一个新数据库上传到服务器,这需要具有 dd/mm/yyyy 的日期格式。

我可以只在数据库而不是整个服务器上强制更改吗?如果我在整个服务器上强制更改,它将使我所有其他应用程序失败

例如,目前我们有这个失败的 sql 语句..

选择 * 从会话 WHERE ultimo_acceso < '16/04/2009 13:36:17'

但当然我们可以添加这个现在可以使用

SELECT * FROM 会话 WHERE ultimo_acceso < Convert(datetime, '16/04/2009 13:36:17', 103)

但问题是应用程序中有大量的sql语句。事实是应用程序相当老旧,我们真的不想对源代码进行任何更改..

因此,因此,如果我们可以仅在数据库/特定数据库的表上强制进行更改,那么这就足够了

任何帮助都非常感谢

4

4 回答 4

9

您可以通过在 SQL Management Studio > 安全 > 登录 > {用户属性} > 默认语言中为该用户选择默认语言来更改每个用户的默认日期格式。

您可以通过以下方式查看每种语言的日期格式

EXEC sp_helplanguage
于 2009-04-16T12:29:55.607 回答
3
SET dateformat dmy;
SELECT * FROM sesiones WHERE ultimo_acceso < '16/04/2009 13:36:17';
于 2009-04-16T12:13:20.967 回答
3

我想你很困惑。sql server 中的日期时间根本不存储为字符串。它们存储为 8 字节二进制值,并且仅在您向用户显示它们时才转换为字符串。您正在使用 Datetime 列来保存您的日期,对吗?

于 2009-04-16T13:01:45.313 回答
2

在 SQL Server 中处理日期时间字符串时,我总是使用 ISO-8601 日期格式

YYYY-MM-DDTHH:MM:SS 

无论您使用哪种语言或区域设置,它都应该有效。

试试你的选择:

SELECT * FROM sesiones WHERE ultimo_acceso < '2009-04-16T13:36:17'

马克

于 2009-04-16T13:04:20.377 回答