2

単一の日時ではなく、それぞれ日付フィールドと整数フィールドに分割された日付/時刻の値を持つテーブルがあります。各行には日付と時間の固有の組み合わせがあるため、1 日あたり 24 行あります。

私の課題は、where ステートメントでこれらのタイムゾーンの調整を考慮する必要がある場合に、異なるタイムゾーンのユーザーに関連するデータを選択することです。たとえば、ユーザーがサーバー時間より 2 時間進んでいる場合、where ステートメントはそれを反映する必要があります。

 ...where concat(theDate,' ',theHour) > convert_tz(concat('2012-01-01',' ','00:00:00'), '-8:00', '-6:00')

..たとえば、PST から中央時間まで。しかし、もちろん、convert_tz や where 句で計算された値を使用することはできません。

不器用なDATE_ADDなどではなく、convert_tzを使用したいと思います。何ができるでしょうか?

たぶん私が間違っているので、where 句に convert_tz を含めることができます。核心的な問題は次のとおりです。

select *, convert_tz(concat(theDay,' ',theHour), '-8:00', '-8:00') 'dayTZ' 
from stats 
where convert_tz(concat(theDay,' ',theHour), '-8:00', '-8:00') > '2011-01-25 05:00:00';

上記はまだ 5 より前の時間の値を返します。

4

1 に答える 1

1

追加してみてくださいstr_to_date

select *, convert_tz(sconcat(theDay,' ',theHour), '-8:00', '-8:00') 'dayTZ' 
from stats 
where str_to_date(convert_tz(concat(theDay,' ',theHour), '-8:00', '-8:00'), '%Y-%m-%d %H:%i:%s') > str_to_date('2011-01-25 05:00:00', '%Y-%m-%d %H:%i:%s');
于 2012-02-01T00:50:12.030 に答える