【问题标题】:How to properly support English and French dates with VB6 and SQL Server?如何使用 VB6 和 SQL Server 正确支持英语和法语日期?
【发布时间】:2009-07-21 08:14:46
【问题描述】:

我们正在为旧版 VB6 应用添加法语支持。

最初的开发人员在写入数据库时​​使用了多种日期格式,但 SQL 似乎并不介意,因为它都是英文的。 (2009 年 3 月 31 日或 2009-03-31 等...)

当您尝试在法国机器上运行应用程序时,您会得到:

[-2147217913][Microsoft][ODBC SQL Server Driver][SQL Server]将字符串转换为 smalldatetime 数据类型时出现语法错误。

我认为问题在于 SQL 看起来像 set xxxx='31-mars-2009' 并且我们拥有的 SQL Server 可以理解英语但不能理解法语。

最初的修复是使用 Format(string,"short date") 似乎可以修复它,但我认为这不是 100% 的修复它。 (注意:我认为短日期工作正常,有一个文本框必须转换为字符串。)

我玩过 SET LANGUAGE,但这似乎没有帮助(但我可能不知道自己在做什么。)

我相信“最正确”的解决方案是使用 YYYYMMDD 格式化所有日期数字。对吗?

(该应用永远不需要移植到任何其他语言,只需要英语和法语。)

【问题讨论】:

  • Format(mydate, "mm/dd/yyyy") 有效吗?
  • 对不起,我没有法语机器可以看到它返回的内容,当你给出一个日期时,比如 31-mars-2009
  • @Raymond:请使用 sql-server 标签而不是“mssql”。主题也一样,真的。没有“MSSQL”之类的东西。
  • 您不需要法国机器。使用控制面板 - 区域设置来更改区域设置。 Format(mydate, "mm/dd/yyyy") 是美国特有的,在国外并不总是有效。例如。在英国,我们使用 dd/mm/yyyy

标签: sql-server vb6 internationalization


【解决方案1】:

有 2 种明确的日期格式可用于 SQL Server YYYYMMDD 就是其中之一。处理其他语言时,事情会变得有些棘手。在 SQL Server 中,您可以为每个登录设置不同的语言。它是登录的默认语言,它规定了日期的解释方式。遗憾的是,默认语言不一定与客户端计算机的区域设置相对应。

这就是我不允许用户在文本框中输入日期的原因。相反,我给了他们一个 DatePicker 控件,它为我完成了所有的验证。 DatePicker 控件有一个 .Value 属性,它是 Date 日期类型。然后,在向 SQL Server 发送日期时,您只需使用 Format 函数(样式设置为 YYYYMMDD)。

更多阅读: Setting a standard date format for SQL Server

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    相关资源
    最近更新 更多