0

我无法让我的 ASPX-App 在生产服务器上工作。由于我的本地环境是德语但服务器是英语并且我的整个代码没有提供文化支持,我目前正在整个脚本中实现它。

正如你可能想的那样,当我在这里写这篇文章时,它并没有按照我想要的方式工作。

该应用程序使用 MSSQL 数据库来收集基于日期范围的信息。因此,我使用用户选择的日期范围进行计算,使用Date BETWEEN x AND y.

日期由用户设置并在脚本中解析为 datetime-values 以便能够处理它们:

_DateRangeStart = DateTime.Parse(DateStart + " 00:00:00", _Culture);
_DateRangeEnd = DateTime.Parse(DateEnd + " 23:59:59", _Culture);

其中_Culture定义如下:

public CultureInfo _Culture = CultureInfo.GetCultureInfo("de-DE");

_DateRangeStart(and End) 是来自文本字段的用户输入。

因此,当我查看脚本时,它显示用户输入已从1.11.2009(这是正确的德语格式日期)转换为11/1/2009 00:00:00 AM,应该是1.11.2009 00:00:00(对于_DateRangeStart)。

SQL 无法读取此值,它给了我一个错误,即无法将 char 转换为有效的日期时间。

为什么转换没有正确完成?

4

2 回答 2

3

我猜你是在你的 DateTime 变量上调用 ToString() 并且它以默认格式输出。SQL 然后尝试以默认格式解释它并失败。我认为您需要做的是以明确的格式格式化日期并将其发送到 SQL Server。

例如

  string myDate = _DateRangeStart.ToString("yyyy-MM-dd");
于 2009-11-23T08:07:36.720 回答
0

您的 sql server 是否设置为 de-de 以外的另一种文化?这也会产生这种行为。如果您的 sql 服务器认为他是美国人,他想要美国格式的日期。

于 2009-11-23T08:11:55.167 回答