Выберите между двумя датами MS Access и php - PullRequest
0 голосов
/ 10 февраля 2019

Я хотел бы выбрать данные из базы данных Ms Access между двумя данными и временем в PHP.

Я использовал этот код.

$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

Я нашел решение здесь .Но это не работает.Это ничего не показывает.

Итак, где мне нужно изменить?Спасибо

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Никогда не пытался запрашивать Access DB из PHP, но поскольку вы используете 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

Кроме того, CDate() не требуется, если столбец CHECKTIME правильно определен как дата в базе данных

0 голосов
/ 10 февраля 2019

В формате проиграть AM / PM

'n/j/Y h:i:s A'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...