在 odbc 数据库中按 DATE 查询选择数据

Posted

技术标签:

【中文标题】在 odbc 数据库中按 DATE 查询选择数据【英文标题】:Query for select data by DATE in odbc database 【发布时间】:2012-06-14 06:32:00 【问题描述】:

谁能告诉我如何使用 php 在 MS.ACCESS 数据库中按日期选择数据? 例如,我正在尝试使用通配符 (absent = 14/06/2012*) 选择数据 (absent = 14/06/2012 13:00:00)

这是我的查询

$sql = "SELECT TOP 1 * FROM absent WHERE id = $id AND absent LIKE '#14/06/2012#'"
$result = odbc_exec($connect, $sql);

缺席字段具有日期(一般日期)类型。而 id = 自动编号。

我没有得到任何结果,使用那个查询。我的错在哪里?

已经在尝试了

absent = #14/06/2012#
absent = '14/06/2012*'

但没有成功。

编辑 好吧,我成功了,但没有使用通配符。这是我的解决方案,我使用范围日期来限制搜索

WHERE absent >= #14/06/2012 AND absent < #15/06/2012#;

该死的女士访问!

【问题讨论】:

absent 是 DATE 格式吗? @ElzoValugi 是的,缺席是 DATE 格式,我的问题是,如何使用 PHP 通配符按日期选择数据?你能帮助我吗?我被卡住了,已经尝试了所有的可能性。 当日 WHERE absent between #2012/06/14# AND #2012/06/15#; 【参考方案1】:

当您通过 ODBC 查询 MS Access 中的日期时间字段时,ODBC 驱动程序会将其转换为时间戳,例如:

select * from table where col=#2012-06-15#

这将转换为 ts '2012-06-15 00:00:00',因此您只会获得该值为 true 的匹配项。

您使用范围的答案更好,但是您应该真正使用:-

select * from table where col>d '2012-06-15' and col<d '2012-06-16'

使用d 'yyyy-mm-dd' 的 ODBC 格式意味着您的代码可以移植到大多数其他 ODBC 驱动程序,而不仅仅是 MS Access。

【讨论】:

我正在查询一个 dbase III 文件并使用 d 'yyyy-mm-dd' 对我有用。尝试 #yyyy-mm-dd# 会导致错误消息指出我缺少操作数。 这个小花絮:d '2012-06-15' 【参考方案2】:

您已包含两种类型的分隔符,字符串和日期。 MS Access 中的查询将是:

$sql = "SELECT TOP 1 * FROM absent WHERE id = $id AND absent = #2012/06/14#"

最好使用年月日格式,因为这样可以避免与语言环境格式产生矛盾。

【讨论】:

【参考方案3】:

我无法尝试我的答案,因为我没有可用的 php,但这里有一些想法 (假设 Absent 是一个 Date 字段)。

LIKE 进行字符串比较,因此在使用 LIKE 时我不会包含 #。 出于同样的原因,您绝对应该包含引号 '" 否则您将得到除法 这是所有美国产品,所以我会尝试 mm/dd/yyyy 格式的日期

因此我的猜测是absent LIKE '06/04/2012*'

其他 - 可能效率较低,但更安全 - 标准可能是:

...AND day(absent) = 14 AND month(absent) = 6 AND year(absent) = 2012

... AND Format(Absent, "dd\/mm\/yyyy") = "14/06/2012"

祝你好运

【讨论】:

以上是关于在 odbc 数据库中按 DATE 查询选择数据的主要内容,如果未能解决你的问题,请参考以下文章

在请求 oracle 中按日期选择(之间)

如何在pyspark中按列合并多个数据框?

在元数据库仪表板中按日期过滤不

MS Access 直通查询 - 使用 ODBC 连接字符串时非常慢,手动选择数据源时速度快 - 问题出在哪里

unnest 是不是始终在 Bigquery 中按命中数的升序显示数据

Oracle sql developer 日期/月份数据提取查询和语法