0

我正在使用 VB.net 构建 SQL 查询

dateFrom As Date ... '02/21/2013
sqlQuery.add(“ HAVING MIN(DATEADD(HOUR, 2, columnDate)) >= ” + myDate)

MyDate 格式是“MM/dd/YYYY”(2013 年 2 月 21 日),但是当我添加到 sqlQuery 字符串时,我得到了这种格式“dd/MM/YYYY”(2013 年 2 月 21 日)。这会导致 SQL 查询失败

为什么日期转换为“ToString”时会改变日期格式?

注意事项

  • 我不能在查询中使用参数
  • 框架 2.0
  • SQL 服务器
4

1 回答 1

5

MyDate 格式为“dd/MM/YYYY”</p>

目前尚不清楚你的意思是什么,但我怀疑你DateTime总体上有点困惑。ADateTime没有格式,就像(说)an一样int。如果您int从十六进制解析然后将其转换为字符串,则默认情况下它将被格式化为十进制 - 该值只是一个数字。日期和时间的工作方式相同。

为什么日期转换为“ToString”时会更改日期格式?

它没有“改变”——它事先并不存在。

幸运的是,无论如何你都不应该这样做。相反,您应该使用参数化 SQL,并设置myDate成命令参数。您应该对SQL 命令中的所有值执行此操作。那样:

  • 您无需担心这样的文本转换。
  • 保护您免受SQL 注入攻击
  • 您将代码(SQL)与数据(值)分开
于 2013-02-21T20:47:13.493 回答