【问题标题】:ADO - Different Date Formats in VB and SQLADO - VB 和 SQL 中的不同日期格式
【发布时间】:2013-11-08 15:25:44
【问题描述】:

我在 VB 中执行这个查询:

 Dim str As String = "select date_created from TABLE_DATES group by date_created"
 Dim cm As SqlCommand = New SqlCommand(str, cn)
 ..

它在 VB 中返回以下字段:

'11/7/2013 4:30:44 PM'

虽然在 SQL 中相同的字段是:

'2013-11-07 16:30:44.917'

所以当我在查询条件中将日期从 VB 发送到 SQL 时,SQL 找不到我要求的行。

有什么解决办法吗?

【问题讨论】:

  • 日期不会以任何格式存储在 Sql Server 中。不要使用字符串来保存日期,使用 DateTime 变量,然后当您显示日期时,按照您的意愿对其进行格式化。您的搜索也应该使用 DateTime 变量。
  • 避免强制 VB 或 SQL 将日期视为 字符串 - 这些是 具有 格式问题的东西。 VB.Net 可以访问 DateTime 类型 - SQL 数据库系统具有适当的类型(例如,对于 SQL Server,datetimedatetime2)。 ADO.Net 知道如何获取 .NET DateTime 并将其转换为适当的数据库类型——所有这些都无需将这些值视为字符串。所以只需使用参数并快乐
  • 我们告诉您,您不应向数据库引擎发送看起来像日期的字符串。您的项目是用于表示提取的日期时间值的字符串。当您查询回数据库时,您应该采用该字符串表示并将其转换回日期并使用参数化查询传递该值。
  • @HelpASisterOut 为什么?无论是在 RDBMS 内部还是外部,按日期排序都能完美运行。
  • @HelpASisterOut 就是这样:不要转换它,将它作为日期对象传递。您需要在列表框项目后面存储确切的日期,否则时间将不匹配。使用@UserSelectedTime 参数创建一个查询,将其设置为列表框中的DateTime 对象,然后将其发送到SQL。你会回到你的行列。

标签: sql vb.net date-format


【解决方案1】:

请参阅我的回答 to another question,这将帮助您确保您的日期始终采用正确的格式。你用它做什么,是你的决定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多