为什么在将日期转换为String时更改日期格式?

时间:2013-02-21 20:43:27

标签: .net sql vb.net date .net-2.0

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

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

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

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

考虑

  • 我无法在查询中使用参数
  • Framework 2.0
  • SQL Server

1 个答案:

答案 0 :(得分:5)

  

MyDate格式为“dd / MM / YYYY”

目前尚不清楚你的意思是什么,但我怀疑你对DateTime总体上有点困惑。 DateTime不会拥有格式,而不是{比例} int。如果您从十六进制解析int然后将其转换为字符串,则默认情况下将其格式化为十进制 - 值只是一个数字。日期和时间的工作方式相同。

  

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

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

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

  • 您无需担心此类文字转换。
  • 您受到SQL injection attacks
  • 的保护
  • 您将代码(SQL)与数据(值)
  • 分开