私は現在これを使用しています:
$rawsql = "SELECT
*
FROM
_erc_foffices n
INNER JOIN
_erc_openings o ON n.id = o.branch_id AND o.dotw = DAYOFWEEK(CURRENT_DATE())
INNER JOIN
_erc_openings_times t ON o.id = t.opening_id
WHERE
(
UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) BETWEEN
UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.open))
AND UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.close))
)
AND
(
n.id = %d
)
;";
データベースにクエリを実行し、大使館が現在開いている場合は大使館からすべての詳細を返します。
ではなくCURRENT_TIMESTAMP()
、変数に格納されている時間$current_local_time
が 2 つのデータベース値の間にあるかどうかを確認する必要があります。時刻表の時刻は、ロンドンの時刻ではなく現地の時刻で保存する必要があるため、変換しようとしています。
を交換してみました
WHERE
(
UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) BETWEEN
UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.open))
AND UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.close))
)
と
WHERE
(
UNIX_TIMESTAMP($current_local_time) BETWEEN
UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.open))
AND UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.close))
)
しかし、エラーメッセージが表示されます。誰かが私にこれを適切に行う方法を教えてもらえますか?
助けてくれてありがとう
編集:$current_local_time
変数は次のように取られます:
date_default_timezone_set('Europe/London');
$time = date("H:i", time());
$myDateTime = new DateTime($time, new DateTimeZone('GMT'));
$myDateTime->setTimezone(new DateTimeZone($timezone));
$current_local_time = $myDateTime->format('H:i:s');
エコーされると、他の国の現在の時刻が何であれ出力されます。
編集2:
$current_local_time を次のように変更しました。
$current_local_time = $myDateTime->format('H:i:s');
$timestamp2 = strtotime($current_local_time);
そして、これに対する where 節:
WHERE
(
'$timestamp2' BETWEEN
UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.open))
AND UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.close))
)
これは問題なく動作しますが、 がt.close
23:30 に設定されている場合、実際には 23:31 までシャットダウンしません。これを整理するために、キャプチャされた時間を 1 分ずらす方法はありますか?