在sql中更改日期格式

时间:2012-04-06 14:42:42

标签: sql sql-server

set dateformat dmy
select isdate('31/1/2012')

我想在Windows控制面板中进入更改数字,日期和时间的格式,我不必在sql中设置DATEFORMAT DMY ? / p>

所以我做了改动,省略了设置的陈述,而且isdate仍然失败,我错过了什么?

4 个答案:

答案 0 :(得分:1)

试试这个。

SELECT CONVERT(VARCHAR(10),GetDate(),111)

此处111是日期格式。您可以更改它以满足您的要求。

答案 1 :(得分:1)

SQL Server通常在System用户帐户或NETWORKSERVICE下运行。这些在安装时采用区域设置。

因此,要更改SQL Server的区域设置,您必须更改sql server服务使用的用户帐户的区域设置。

您可以按照this article

中说明的步骤进行更改

(我从未对此进行过测试,但理论上它应该有效。)

答案 2 :(得分:1)

在SQL Server 2012中,您可以使用TRY_PARSE并指定文化(例如en-gb)。您可以在此处阅读TRY_PARSE

http://msdn.microsoft.com/en-us/library/hh213126(v=sql.110).aspx

当然,更安全的是首先使用明确的日期格式,并避免所有的文化废话。您可以让应用程序在看到数据库之前转换用户条目,或者只是完全避免字符串输入 - 使用日历控件或下拉菜单,您可以指定安全格式,如YYYYMMDD,而不必担心区域性,语言或dateformat设置 - 不要相信所有用户都在输入d/m/ym/d/y ...

答案 3 :(得分:0)

无论服务器设置如何,SQL都会处理数据库中的日期时间。 如果你有一个看起来像日期时间的任何格式的字符串,你想转换它,你可以使用CAST()或CONVERT()来做这个。但你总是必须这样做。

请参阅http://msdn.microsoft.com/en-us/library/ms187928.aspx

一个好的信息也是http://karaszi.com/the-ultimate-guide-to-the-datetime-datatypes

在你的情况下

select isdate('31/1/2012')

应该有效。那么当你运行它时会得到什么错误?

编辑: 试过这个:

SELECT DATEPART(m,CAST('1/31/2012' AS datetime))

SELECT DATEPART(m,CONVERT(datetime, '31/1/2012', 103))

总是按照我的预期给我一个月。