我目前使用这个数据库:使用转换UNIX时间戳来查询
$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_local_time) BETWEEN
UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.open))
AND UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.close))
)
更换
WHERE
(
UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) 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分才会关闭。有没有办法从捕获的时间中抽出一分钟来解决这个问题?
你得到的错误信息是什么? – syrion 2011-04-12 14:25:43
警告:mysql_num_rows()期望参数1是资源,在第185行E:\ wamp \ www \ app \ webroot \ erc \ index.php中给出的布尔值012, 警告:mysql_num_rows()期望参数1为资源,布尔值在E:\ wamp \ www \ app \ webroot \ erc \ index.php在197: – 2011-04-12 14:32:28