すべての日付と時刻がローカル タイムゾーン (英国) で保存される従来のアプリケーションを継承しました。これらの保管方法を変更する立場にはありません。
ただし、要件は、アプリ内ですべての日付を GMT で表示することです。したがって、データベースからイベントのリストを取得するときは、特定のイベントの日付ごとに夏時間が稼働しているかどうかを観察しながら、すべてをこの時間形式で表示する必要があります。次のロジックを使用して、クエリ内で夏時間が有効かどうかを判断できます。
IF(CAST(TIMEDIFF(NOW(), UTC_TIMESTAMP()) AS SIGNED) >0,
DATE_FORMAT(CONVERT_TZ(ADDTIME(`event_date`, IFNULL(`event_time`, '00:00')), '+01:00', '+00:00'), '%H:%i'), `event_time`) AS event_time
ただし、これは明らかに、実行されている日付のみをチェックしています。そのため、夏時間の境界を超える将来のイベントは機能しません。
特定の日付が mysql クエリ自体の DST にあるかどうかを検出する方法はありますか?
どんな助けでも大歓迎です。