我有一个查询产生这样的结果:
数据按日期DESC排序,然后按时间DESC排序,同时还将常用的'markers_name'元素分块在一起。 (他们只在每个日期分组在一起)。
为此,我为conditions中的(markers_id, date)的每个组合获取MAX(time)值的列表,然后将该列表加入到我从当前查询获得的行集中,并使用MAX(time)值进行排序:
SELECT
m.name AS markers_name,
c.time AS conditions_time,
c.date AS conditions_date,
s.name AS station_name
FROM markers m
INNER JOIN conditions c ON c.markers_id = m.id
INNER JOIN station s ON c.station_id = s.id
INNER JOIN (
SELECT
markers_id,
date,
MAX(time) AS time
FROM conditions
GROUP BY
markers_id,
date
) mx ON c.markers_id = mx.markers_id AND c.date = mx.date
ORDER BY
c.date DESC,
mx.time DESC,
m.name DESC,
c.time DESC日期和时间作为UTC时间存储在MySQL数据库中。客户端使用javascript将日期和时间转换为本地时区。相反,我想用php和MySQL在服务器上进行转换。任何人都可以提供任何建议,我可以用MySQL查询(或者用php和MySQL)来完成这个任务吗?
客户端使用ajax从服务器请求这些数据,所以我可以使用javascript方法getTimezoneOffset()轻松地在查询中包含时区偏移量。
日期使用此代码使用单独的日期和时间字段存储在数据库中:
// convert timestamp to seconds
// time is provided by client as the number of milliseconds since January 1, 1970 00:00:00 UTC.
$utc_timestamp = trim($_POST['utc_timestamp']);
date_default_timezone_set('UTC');
$utc_timestamp = $utc_timestamp/1000;
$time = date("H:i:s",$utc_timestamp);
$date = date("Y:m:d",$utc_timestamp);如果有必要,我可以存储$ utc_timestamp而不是$ time和$ date,但改变我存储数据的方式有点可怕。
提前致谢....