1

したがって、このコードを使用して、データベースから毎日の最後のエントリを取得しています。

SELECT a.id, a.userid, a.jurisdiction, a.country, a.date
FROM dk_location_records AS a,
        (SELECT userid, DATE(date) AS just_date, MAX(date) AS date
            FROM dk_location_records
            GROUP BY 1, 2 --userid, DATE(date)
        ) AS b
WHERE a.userid = b.userid
AND a.date = b.date;

私の質問は、次のようなものをどのように組み込むことができるかということですCONVERT_TZ( date, '+00:00', '+01:00' )。別のタイムゾーンで1日あたりの最後のエントリを取得する。私はこれまでCONVERT_TZ、変換された日付を表示するためにを使用することができました。MAX()しかし、CONVERT_TZ()一緒に使うことはできますか?

4

1 に答える 1

0

極端に単一の行を選択する場合は、結果セットを目的の基準で並べ替え、出力を単一の行に制限することで、それを試すことができます。何か、おそらく、

SELECT a.id, a.userid, a.jurisdiction, a.country, a.date
ORDER BY CONVERT_TZ( date, '+00:00', '+01:00') DESC
LIMIT 1

サブクエリテーブルスキャンを実行するよりもかなり高速である必要があります。

しかし、私はあなたがここで何をしようとしているのか誤解しているかもしれません。タイムゾーンを変換しても、日付の順序は変わりません。別のタイムゾーンで1日以内にエントリを検索したい場合は、試してみることができます。

SELECT a.id, a.userid, a.jurisdiction, a.country, a.date
WHERE CAST(CONVERT_TZ(a.date, '+00:00', '+01:00') AS DATE) = CURDATE()
ORDER BY a.date DESC
LIMIT 1

もちろん、ニーズに合わせて'+01:00'(宛先のタイムゾーン)とCURDATE()(検索している日付)を変更してください。

于 2011-07-18T06:32:08.053 に答える