簡體   English   中英

在兩個日期之間選擇MS Access和php

[英]Select between two dates MS Access and 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

我在這里找到了解決方案。 但這是行不通的。 這沒什么顯示。

那么,我需要在哪里更改? 謝謝

從未嘗試從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將把您的字符串識別為日期,並且如果您使用標准的國際格式Ymd H:i:s ,則應該正確地解析它們Ymd H:i:s

此外,如果將CHECKTIME列正確定義為數據庫中的日期,則不需要CDate()

格式丟失AM / PM

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM