【发布时间】:2015-10-13 19:59:30
【问题描述】:
请帮助我了解发生了什么
我有一个 Visual Basic 应用程序,它从访问数据库返回数据 我想用这种格式“01/12/2015”(12 月 1 日)查询带有日期的 db 字段 为此,我有一个 datetimepicker
我的数据库中有这条记录 - 01/12/2015
当我更新我的代码以将它的 datetimepicker 值包含到查询中时,它不会返回任何内容,如果我输入 2015 年 12 月 1 日,它会找到 2015 年 1 月 12 日的记录
我的查询如下所示:
dim dd as date
dd = datetimepicker.value
qrytxt = "select * from table where [Date] = #" + dd + "#"
如果我放一个 msgbox 来返回 qrytxt 它会返回
select * from table where [Date] = #01/12/2015#
但它仍然会根据数据库检查错误的日期...
我也有这个 Imports System.Globalization,我读过一些关于 CultureInfo 的内容,但我无法在我的查询中使用它。
还有什么我需要包括或做的吗?
【问题讨论】:
-
“我有一个 Visual Basic 应用程序...” - 你的意思是 VB.NET 应用程序吗?
-
Access db 引擎会将
where [Date] = #01/12/2015#解释为 1 月 12 日。也许您打算 01/12/2015 表示 12 月 1 日。但这令人困惑,因为您的问题说 2015 年 1 月 12 日代表 1 月 1 日,这是不合理的。 -
我相信在您的 VBA 中,因为您将
dd声明为日期,它已默认为您的语言环境首选日期格式dd/mm/yyyy,但我猜是 Access,至少是这样您正在连接它,并不关心您的语言环境,而是只想接收mm/dd/yyyy格式。这是典型的数据库具有它喜欢的默认日期格式并且您必须遵守它。无论好坏。 -
对查询中的文字日期值使用 yyyy-m-d 格式。例如,如果您想定位 2015 年 1 月 12 日 ...
WHERE [Date] = #2015-1-12# -
格式仅供展示。它不会影响基于 Double 数值的值本身。
标签: sql vb.net datetime ms-access globalization