sql >> データベース >  >> RDS >> Mysql

AWSRDSインスタンスのデータベースタイムゾーンを設定する方法

    残りの回答の前に、UTCを使用するようにアプリケーションを変更するオプションがある場合は、現在および将来、多くの苦痛を軽減することを今すぐお勧めします。

    ただし、質問のコンテキストを考えると、これはオプションではなく、タイムゾーンを変更できる従来のサーバー環境でMySQLを使用するように設計されたシステムを採用していること、およびコードロジックが存在することを前提としています。このタイムゾーンを想定しており、UTCを使用するように簡単に適応させることはできません。

    ただし、PSTとして保存するために本当に必要な場合は、読み進めてください。

    mySqlがデフォルトでタイムスタンプストレージにサーバーのタイムゾーンを使用することは正しいですが、RDSインスタンスのタイムゾーンが起動されたAWSリージョンに基づいて設定されているという仮定は正しくありません -すべてのRDSインスタンスは、タイムゾーンをUTC、に設定して起動され、この設定では次のことができます。変更しない:

    したがって、唯一のオプションは、アプリケーションがデータベースインスタンスに対して行う各接続のタイムゾーンをPSTに設定することです。 SET SESSION time_zone = 'PST'を使用できます ここにあります の2つの手順に従ってアプリケーションが行うすべての接続で実行するクエリ :

    1. 次のストアドプロシージャを作成します(UTC-8はPSTです):

    2. インスタンスに接続し、次のコマンドを実行します:

    3. EXECUTEを付与する必要がある場合があります データベースに接続するユーザーへのアクセス許可。そうしないと、接続エラーが発生する可能性があります:

    これで、クライアントがRDSインスタンスに対して実行するすべてのクエリは、アプリケーションロジックを変更したり、データベースに以前に保存されたタイムスタンプを更新したりすることなく、PSTを使用する必要があります。




    1. 行を数えるためのphpを使用した私のSQLのベストプラクティス

    2. 選択句でコンストラクターを使用して、複数のテーブルで選択された列のHQLJOINクエリを作成する方法

    3. MySQLのルートパスワードをデフォルトに変更するにはどうすればよいですか?

    4. SQL Server:ORDERBYを使用してテーブルを更新します