【发布时间】:2011-08-03 22:54:53
【问题描述】:
我目前正在使用这个:
$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 中的时间是否在两个数据库值之间。时间表时间需要存储在当地时间而不是伦敦时间,这就是我尝试转换它们的原因。
我已尝试更换
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 才会关闭。有没有办法从捕获的时间中抽出一分钟来解决这个问题?
【问题讨论】:
-
您收到的错误信息是什么?
-
警告:mysql_num_rows() 期望参数 1 是资源,布尔值在 E:\wamp\www\app\webroot\erc\index.php 第 185 行给出 警告:mysql_num_rows() 期望参数 1作为资源,在第 197 行的 E:\wamp\www\app\webroot\erc\index.php 中给出的布尔值
标签: php mysql unix timestamp timetable