【问题标题】:Problem with date day/month reversing on save保存时日期日/月反转的问题
【发布时间】:2008-11-11 10:56:09
【问题描述】:

我们遇到了一个仅影响生产环境的问题。

我们有一个 VB6/ASP 网站,允许手动编辑数据库表中的数据。

它看起来很像一个可编辑的数据网格。

其中一个可编辑的列是日期,当保存记录时,日期/月份会被颠倒。

03/11/2008 变为 11/03/2008,如果您要重新保存记录,日期又是 03/11/2008。

我已经检查了 DB 值,它确实被反转了,但是测试系统上相同的代码没有这样做。

所以我非常有信心我正在寻找环境变化。测试系统在本地托管了数据库和站点,在实时设置中,我们有一个单独的网站服务器和数据库服务器。你建议我从哪里开始寻找这个问题。我检查了服务器上的区域设置,它们设置为英国,操作系统日期格式正确。

这是 SQL Server 2000。给我一些想法!

谢谢:)

【问题讨论】:

    标签: sql-server vb6 asp-classic


    【解决方案1】:

    如果您将用户提供的字符串转换为日期之前您将它提供给数据库,那么执行您的 ASP 页面的线程的Session.LCID 负责日期的解释方式。

    如果您将日期作为字符串提供给 SQL Server 并在那里进行转换,那么查看SET DATEFORMATSET LANGUAGE 语句将会很有用。

    所以这是我的想法:要么停止使用(鼓励您的用户使用)模糊的日期格式,这个问题就会消失,或者确保处理链的所有环节都清楚地了解预期的格式。

    【讨论】:

    • 最后我们只是在查询前面对日期格式进行了旧的修改
    【解决方案2】:

    这几乎肯定与您的机器或数据库服务器设置为美国日期格式有关。仔细检查两个系统设置。

    或者,快速Google search 将提供一些用于处理数据的选项,以便它可以满足您的需要。

    【讨论】:

      【解决方案3】:

      操作系统的区域设置如何?

      【讨论】:

        【解决方案4】:

        以下

        选择名称、别名、日期格式 来自系统语言 其中 langid = (从 master..sysconfigures 中选择值 其中comment = '默认语言')

        在测试和现场返回相同的结果

        us_english 英语 mdy

        问题是系统无法重新部署以更改。我需要找出原因并解决它。

        【讨论】:

          【解决方案5】:

          进入 regedit 并转到 Windows 注册表中的以下位置:

          HKEY_USERS.DEFAULT\Control Panel\International\

          检查以确保“sShortDate”字段正确。

          多次存储在此位置的短日期格式与存储在 Windows 控制面板/区域选项中的短日期格式不同。区域选项中的短日期适用于您登录 Windows 的用户。 Windows 服务使用的短日期格式的 HKEY_USERS 中的“sShortDate”字段。

          【讨论】:

          • 好的,我检查了 Web 服务器和数据库服务器上的每个用户,一切都是正确的。我确实设法找到了一种复制结果的方法。在开发服务器上,我将 sa 更改为英式英语,并且日期颠倒了,所以我换回了英语。但是 Live 也设置为英语
          猜你喜欢
          • 1970-01-01
          • 2012-04-19
          • 1970-01-01
          • 1970-01-01
          • 2011-04-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-05
          • 2018-04-05
          相关资源
          最近更新 更多