在 MS Access 和 php 两个日期之间选择

Posted

技术标签:

【中文标题】在 MS Access 和 php 两个日期之间选择【英文标题】:Select between two dates MS Access and php 【发布时间】:2019-02-10 07:23:30 【问题描述】:

我想在 php 中的两个数据和时间之间从 Ms Access 数据库中选择数据。

我使用了这个代码。

$dbc = odbc_connect("Attend", "", "");
if(!$dbc) 
    exit("Cannection Faild");


$in = date('n/j/Y h:i:s',strtotime('2019-01-30 00:00:01'));
$out = date('n/j/Y h:i:s',strtotime('2019-01-30 23:59:59'));

$query = "SELECT * FROM CHECKINOUT WHERE USERID = 214 AND CDate(CHECKTIME) between '$in' and '$out'";

$results = odbc_exec($dbc, $query);

if(!$results) 
    exit("Error in SQL");


while (odbc_fetch_row($results)) 
    echo odbc_result($results, "CHECKTIME")."<br/>";


odbc_close($dbc);

但这没有显示出来。但是如果我用这个来改变日期和日期:

$in = date('n/j/Y h:i:s',strtotime('2019-01-29 00:00:01'));
$out = date('n/j/Y h:i:s',strtotime('2019-01-31 23:59:59'));

它会显示意想不到的结果。如下:

2018-01-03 08:26:52
2018-01-03 20:19:09
2018-01-30 07:55:38
2018-01-30 14:37:09
2019-01-30 11:48:27
2019-01-30 12:17:26
2019-01-30 12:38:33
2019-01-30 13:29:27
2019-01-30 14:15:20
2019-01-30 18:11:27
2019-01-30 19:09:10
2019-01-30 19:28:43
2019-01-31 10:28:51

我找到了解决方案here。但它不起作用。这没什么表现。

那么,我需要改变哪里? 谢谢

【问题讨论】:

【参考方案1】:

从未尝试从 PHP 查询 Access DB,但由于您使用的是 ODBC,因此与其他编程语言应该没有任何区别

试试这个

$in = '2019-01-30 00:00:01';
$out = '2019-01-30 23:59:59';

$query = "SELECT * FROM CHECKINOUT WHERE USERID = 214 AND CDate(CHECKTIME) between #$in# and #$out#";

在 MS Access SQL 中,日期应该用# 括起来。

而且我认为没有理由首先将字符串转换为日期,因为如果您将字符串用# 括起来,MS access 会将您的字符串识别为日期,并且如果您使用标准国际格式,它们应该被正确解析Y-m-d H:i:s

此外,如果 CHECKTIME 列在数据库中正确定义为日期,则不需要 CDate()

【讨论】:

【参考方案2】:

在格式中丢失 AM/PM

'n/j/Y h:i:s A'

【讨论】:

以上是关于在 MS Access 和 php 两个日期之间选择的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 在两个日期之间进行选择?

在 PHP 中无法使用 MS Access 之间

从两个日期之间的 MS Access 表中选择?

使用 php 在两个日期之间选择 ms 访问

在 MS Access 中获取两个时间值之间的记录

MS Access:按开始日期和结束日期之间每个月的月份分组