/ / Jak wyświetlić właściwy znacznik czasu, gdy zapytanie wybierz w mysql? - php, mysql, symfony

Jak wyświetlić właściwy znacznik czasu, gdy zapytanie wybierz w mysql? - php, mysql, symfony

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 № 1

Aby 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.