Chciałbym wyświetlić właściwy datownik mojego zapytania. Data w mojej bazie danych jest ustawiona w datach i datach Europa / Berlin. To jest w mojej konfiguracji serwera i zawsze otrzymuję ten wynik.
2017-05-26 09:05:58
Chcę wyświetlić datę z mojego zapytania. tutaj jest kod mojego zapytania
select logs.action_date_time from AuditLogs
Jak mogę przekonwertować datę logs.action_date_time w moim miejscu na Filipinach? Miałem zobaczyć ten wynik
2017-05-26T09: 05: 58 + 02: 00
Przeszukuję go w google unix_timestamp, ale janie widzisz żadnej próbki, której używają w select przed zapytaniem. Używam do tego symfony. Podaję tylko podsumowanie tego, co wynika z powyższego kodu przykładowego.
const SELECT =
"SELECT logs.id, logs.object_id AS objectId, logs.object_type AS objectType, logs.object_name AS objectName, "."logs.action, logs.action_date_time AS actionDateTime, logs.action_status AS actionStatus, logs.subject, logs.user, "."logs.description, logs.ip, logs.param03_value AS userId, logs.param04_value AS userDisplayName ";
public function getNext($params)
{
// Hardcode for now
$limit = $params["limit"] ? (int) $params["limit"] : self::DEFAULT_LIMIT;
$limit++;
$select = self::SELECT;
$whereClause = $this->constructWhereClause($params);
$sql = "
$select FROM spoke.audit_logs AS logs
$whereClause
ORDER BY logs.action_date_time DESC, logs.id DESC
LIMIT $limit";
if ($params["cursor"]) {
$now = new DateTime();
$datetime = $now->getTimestamp();
if (isset($params["datetime"])) {
$datetime = $params["datetime"];
}
$whereClause = $this->constructWhereClause($params, "logs1", false);
$sql = "
$select
FROM spoke.audit_logs logs1, spoke.audit_logs logs
WHERE logs1.id = logs.id
$whereClause
AND logs1.action_date_time <= "$datetime"
AND (logs1.id < {$params["cursor"]} OR logs1.action_date_time < "$datetime")
ORDER BY logs1.action_date_time DESC, logs1.id DESC
LIMIT $limit";
}
$stmt = $this->getEntityManager()->getConnection()->query($sql);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
Odpowiedzi:
1 dla odpowiedzi № 1Aby uzyskać kolumnę datetime UTC jako znacznik czasu UNIX
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, "+00:00", @@session.time_zone)) FROM `table_name`
Źródło jest tutaj: Połączyć
1 dla odpowiedzi nr 2
Musisz użyć MySQL CONVERT_TZ
funkcja do konwersji stref czasowych, np .:
SELECT CONVERT_TZ(action_date_time, "CEST", "PHT") FROM AuditLogs;
Alternatywnie możesz również podać różnicę strefy czasowej, np .:
SELECT CONVERT_TZ(action_date_time,"+01:00","+08:00") FROM AuditLogs;
Tutaj jest dokumentacja.