代码之家  ›  专栏  ›  技术社区  ›  Robert

保存时日期/日期/月反转出现问题

  •  0
  • Robert  · 技术社区  · 16 年前

    我们的问题只影响生产环境。

    我们有一个vb6/asp网站,允许手工编辑数据库表中的数据。

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

    其中一个可编辑列是日期,当保存记录时,日期/月将被反转。

    2008年11月3日变为2008年3月11日,如果您要重新保存记录,则日期为2008年11月3日。

    我已经检查了db值,它确实被颠倒了,但是测试系统上相同的代码并不能做到这一点。

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

    这是SQL Server 2000。给我一些主意!.

    谢谢)

    5 回复  |  直到 13 年前
        1
  •  1
  •   Tomalak    16 年前

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

    如果您将日期作为字符串输入到SQL Server,并让转换在那里发生,那么查看 SET DATEFORMAT 以及 SET LANGUAGE 声明。

    因此,我的想法是:要么停止使用(鼓励用户使用)不明确的日期格式,这个问题就会消失,要么确保处理链的所有链接都清楚地了解预期的格式。

        2
  •  1
  •   ZombieSheep    16 年前

    几乎可以肯定,这与您的计算机或数据库服务器被设置为US日期格式有关。再次检查两个系统设置。

    或者,快速 Google search 将显示一些操作数据的选项,以便它可以执行您需要的操作。

        3
  •  0
  •   kenny    16 年前

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

        4
  •  0
  •   Robert    16 年前

    以下

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

    在测试和活动中返回相同的结果

    美国英语MDY

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

        5
  •  0
  •   Keith Maurino    16 年前

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

    hkey_users.default\控制面板\国际\

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

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