我的mysql dbase中有一些事件,其日期格式为YYYY-MM-DD,时间为00:00:00。 我的SELECT查询看起来像
$STH_1 = $DBH->query("SELECT table_name
FROM information_schema.tables
WHERE table_name
LIKE 'v_c_ei\_9%'");
$stmts_1 = array();
foreach($STH_1 as $row_1) {
$stmts_1[] = sprintf("SELECT *
FROM %s
WHERE date='%s'", $row_1['table_name'], $date);
}
$stmt_1 = implode("\nUNION\n", $stmts_1);
$stmt_1 .= "\nORDER BY time ASC";
$STH_5_2 = $DBH->query($stmt_1);
日期变量是典型的日期格式,如YYYY-MM-DD。
F.ex。我们有一个DATE和时间23:30:00的事件(dbase所有时间UTC)。我有一个来自不同时区的用户(f.ex. + 1.00)。对于他来说,系统必须显示事件而不是DATE和时间23:30:00,但是DATE + 1和时间00:30:00。但此时,系统会在DATE和时间00:30:00显示此事件(仅更改时间,而不是日期) - 也许在主dbase SELECT之后时间会发生变化。
要显示的所有收到的事件必须仅从一个DATE开始,时间从00:00:00到23:59:59。
我必须更改(可能在主SELECT查询中)以获得与用户时区相关的正确日期和时间吗?
答案 0 :(得分:0)
由于您描述的详细信息是特定于用户的逻辑,因此您最好将格式保留为尽可能晚。通常,最好在数据库和应用程序逻辑中处理UTC日期,并且只在向用户显示时格式化它们。
您是否考虑过使用DateTime object?您可以将数据库查询中的日期加载到新实例中,然后根据用户首选项和setTimezone() method来操作对象。