为什么我用西班牙语设置“默认语言”GETDATE()仍然用英语格式化日期?

时间:2013-08-31 16:23:38

标签: sql-server sql-server-2008 date-formatting getdate

为什么我在SQL-Server 2008上执行此操作:

EXEC sp_configure 'default language', 5
reconfigure

日期格式为dd / mm / yyyy:

select * from sys.syslanguages where langid = 5

返回

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

所以如果我这样做

select GETDATE()

我正在等待:

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

但我明白了:

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

我正在使用SQL-Server 2008 Express兼容模式100

增加:

我真正的问题是我需要在dd / mm / yyyy hh:mm到DATETIME变量中传递存储过程日期,但解析器仍在等待yyyy-mm-dd,尽管我更改了默认语言。

谢谢

2 个答案:

答案 0 :(得分:1)

以下将由Management Studio呈现,无论服务器设置如何:

SELECT GETDATE();

这会将datetime值返回给客户端应用程序,而不是A STRING。如果需要字符串,可以显式转换为特定样式:

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

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

其他任何东西都可能被误解。这就是为什么除了在演示/显示的最后一步之外,你不应该把它们作为字符串处理。

答案 1 :(得分:0)

你可以像这样使用

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

结果为enter image description here