来自dbase,时区和时间的时间午夜

时间:2011-12-13 17:42:01

标签: php mysql time

我的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查询中)以获得与用户时区相关的正确日期和时间吗?

1 个答案:

答案 0 :(得分:0)

由于您描述的详细信息是特定于用户的逻辑,因此您最好将格式保留为尽可能晚。通常,最好在数据库和应用程序逻辑中处理UTC日期,并且只在向用户显示时格式化它们。

您是否考虑过使用DateTime object?您可以将数据库查询中的日期加载到新实例中,然后根据用户首选项和setTimezone() method来操作对象。