0

我正在努力解决 MS SQL 2005 Express 问题。当 Windows 区域选项(控制面板)设置为英语(美国)时,如下所示的查询非常有效,但设置为意大利语(可能还有其他语言)时会失败。

UPDATE MyTable SET StartDate='2009-07-14 12:05:30' WHERE ID=7

我还尝试了许多不同的日期时间格式,例如 ISO 8601:

yyyy-MM-ddTHH:mm:ss

(另见: http: //karaszi.com/the-ultimate-guide-to-the-datetime-datatypes

除了 yyyyMMdd 之外,这些格式都不起作用,但随后我失去了不可接受的时间。

同样先执行此查询也没有区别:

SET LANGUAGE us_english

PS:我从 .Net 程序执行查询,但 SQL Server Management Studio 给出了相同的结果:它无法将字符串转换为数据时间。一旦设置更改回美国英语,它就会再次工作。

如何使此查询与其他语言设置一起使用?

4

3 回答 3

2

您应该使用与地区无关的日期。在 SQL Server 中,您可以这样做:

UPDATE MyTable SET StartDate={ts '2009-07-14 12:05:30'} WHERE ID=7

从代码来看,更好的是使用命名参数并将 DateTime 对象作为参数传递。

于 2009-07-13T10:01:06.437 回答
1

您是否尝试过 yyyymmdd hh:mm:ss 格式?

UPDATE MyTable SET StartDate='20090714 12:05:30' WHERE ID=7
于 2009-07-13T10:03:34.420 回答
0

After some hours of trying I found the solution. The ISO 8601 format works perfect in MS SQL, but something went wrong in formatting the date in VB.net.

First I used the following format specifier:

Dim dateString As String = aDate.ToString("yyyy-MM-ddTHH:mm:ss")

However, somehow the result is something like "2009-07-14T12.05.30" instead of "2009-07-14T12:05:30", so dots instead of ":"!

When using

Dim dateString As String = aDate.ToString("s")

The correct format is applied: "2009-07-14T12:05:30".

于 2009-07-13T11:46:32.760 回答