1

why if I do this on my SQL-Server 2008:

EXEC sp_configure 'default language', 5
reconfigure

Where the date format is dd/mm/yyyy:

select * from sys.syslanguages where langid = 5

returns

dateformat
----------
dmy

So if I do

select GETDATE()

I'm waiting for something like:

(no column name)
----------------
31/08/2013 13:20:44.590

but I get:

(no column name)
----------------
2013-08-31 13:20:44.590

I'm using SQL-Server 2008 Express compatibility mode 100

ADDED:

My real problem is that I need to pass to Stored Procedures dates in dd/mm/yyyy hh:mm to DATETIME variables, but the parser is still waiting for yyyy-mm-dd although I change the default language.

Thank you

4

2 回答 2

1

无论服务器设置如何,Management Studio 都会呈现以下内容:

SELECT GETDATE();

这是向客户端应用程序返回一个日期时间值,而不是一个字符串。如果需要字符串,可以显式转换为特定样式:

至于存储过程的输入,请,请,请传递正确的日期时间参数,而不是字符串。当您真的不知道他们是指 9 月 6 日还是 6 月 9 日时,没有理由允许用户输入像 6/9/2013 这样的自由文本。传递给 SQL Server 的安全格式是:

YYYYMMDD HH:MM:SS.nnn
YYYY-MM-DDTHH:MM:SS.nnn

其他任何事情都可能被误解。这就是为什么您不应该在任何地方将这些作为字符串处理,除非在演示/显示的最后一步。

于 2013-08-31T18:11:12.890 回答
0

你可以这样使用

Select CONVERT(varchar(100), GETDATE(),103)+' '
+CONVERT(varchar(100), GETDATE(),108) as now

结果是在此处输入图像描述

于 2013-08-31T18:37:46.433 回答