Прежде всего, стоит отметить, что столбцы даты / времени в MySQL не хранятся в каком-либо конкретном строковом формате. При печати они преобразуются в строки, и вы можете выбрать, как их отформатировать.
Если вы хотите использовать чистое решение MySQL, функции, относящиеся к вашей проблеме, включают CONVERT_TZ () для получения времени UTC и DATE_FORMAT () для отображения его по мере необходимости. E.g.:
SELECT CURRENT_TIMESTAMP,
CONVERT_TZ(CURRENT_TIMESTAMP, '+01:00', '+00:00'),
DATE_FORMAT(CONVERT_TZ(CURRENT_TIMESTAMP, '+01:00', '+00:00'), '%Y-%m-%dT%H:%i:%sZ')
Проблема в основном заключается в том, что вам необходимо знать свой часовой пояс заранее, поскольку столбцы TIMESTAMP не позволяют хранить такую информацию. Также могут возникнуть проблемы с переходом на летнее время.
Что касается PHP, функция date () позволяет комбинировать код формата, вы не ограничены только одним:
<?php
$ts = strtotime($date_from_mysql);
$solr_date date('Y-m-d', $ts) . 'T' . date('H:i:s', $ts) . 'Z';
?>