Access 数据库的 .NET 查询将 dd/mm/yyyy 日期文字错误解释为 mm/dd/yyyy
.NET query of Access database misinterprets dd/mm/yyyy date literal as mm/dd/yyyy
请帮助我了解发生了什么
我有一个 Visual Basic 应用程序,它 return 从访问数据库获取数据
我想查询一个日期格式为“01/12/2015”(12 月 1 日)的数据库字段
为此,我有一个日期时间选择器
我的数据库中有这条记录 - 01/12/2015
当我更新我的代码以将它的 datetimepicker 值包含到查询中时,它不会 return 什么都没有,如果我输入 12/01/2015 它会找到包含 01/12/2015 的记录
我的查询如下所示:
dim dd as date
dd = datetimepicker.value
qrytxt = "select * from table where [Date] = #" + dd + "#"
如果我把一个 msgbox 放到 return qrytxt 它 returns
select * from table where [Date] = #01/12/2015#
但它仍然会根据数据库检查错误的日期...
我也有这个 Imports System.Globalization 并且我阅读了一些关于 CultureInfo 的内容,但我无法在我的查询中使用它。
还有什么我需要包括或做的吗?
只需对日期值强制设置格式即可为日期创建字符串表达式:
Dim dd As Date
dd = datetimepicker.value
qrytxt = "select * from table where [Date] = #" + dd.ToString("yyyy'/'MM'/'dd") + "#"
why is this happening?
发生这种情况是因为日期文字不明确,并且与 Access 数据库引擎假定 不明确的日期文字的格式不匹配。
将日期文字与动态 SQL 一起使用无论如何都是错误的方法。 DateTimePicker returns 一个真实的 System.DateTime
值(始终明确),因此您应该将其用作 参数化查询的一部分 :
Using cmd As New OdbcCommand("SELECT COUNT(*) AS n FROM Clients WHERE DOB = ?", conn)
cmd.Parameters.Add("?", OdbcType.DateTime).Value = DateTimePicker1.Value.Date
MessageBox.Show(cmd.ExecuteScalar)
End Using
请帮助我了解发生了什么
我有一个 Visual Basic 应用程序,它 return 从访问数据库获取数据 我想查询一个日期格式为“01/12/2015”(12 月 1 日)的数据库字段 为此,我有一个日期时间选择器
我的数据库中有这条记录 - 01/12/2015
当我更新我的代码以将它的 datetimepicker 值包含到查询中时,它不会 return 什么都没有,如果我输入 12/01/2015 它会找到包含 01/12/2015 的记录
我的查询如下所示:
dim dd as date
dd = datetimepicker.value
qrytxt = "select * from table where [Date] = #" + dd + "#"
如果我把一个 msgbox 放到 return qrytxt 它 returns
select * from table where [Date] = #01/12/2015#
但它仍然会根据数据库检查错误的日期...
我也有这个 Imports System.Globalization 并且我阅读了一些关于 CultureInfo 的内容,但我无法在我的查询中使用它。
还有什么我需要包括或做的吗?
只需对日期值强制设置格式即可为日期创建字符串表达式:
Dim dd As Date
dd = datetimepicker.value
qrytxt = "select * from table where [Date] = #" + dd.ToString("yyyy'/'MM'/'dd") + "#"
why is this happening?
发生这种情况是因为日期文字不明确,并且与 Access 数据库引擎假定 不明确的日期文字的格式不匹配。
将日期文字与动态 SQL 一起使用无论如何都是错误的方法。 DateTimePicker returns 一个真实的 System.DateTime
值(始终明确),因此您应该将其用作 参数化查询的一部分 :
Using cmd As New OdbcCommand("SELECT COUNT(*) AS n FROM Clients WHERE DOB = ?", conn)
cmd.Parameters.Add("?", OdbcType.DateTime).Value = DateTimePicker1.Value.Date
MessageBox.Show(cmd.ExecuteScalar)
End Using