Azure Potal上でSQL Databaseを作成する際、以下の手順で作成すると、SQL DatabaseのタイムゾーンはUTC(協定世界時)となり、日本時間より9時間前の時刻となる。
今回は、ローカル SQL ServerとAzure SQL Databaseそれぞれで、タイムゾーンや現在日時を確認し、Azure SQL Database上での現在日時を、UTCから日本時間に変換してみたので、その結果を共有する。
なお、以下のサイトに記載のように、Azure SQL Managed Instanceを利用した場合は、タイムゾーンを指定してSQL Databaseを作成することができる。
https://learn.microsoft.com/ja-jp/azure/azure-sql/managed-instance/timezones-overview?view=azuresql
前提条件
下記記事のように、A5M2を利用してSQL Serverに接続できていること。
また、下記記事のように、Azure Potal上でSQL Databaseを作成できていること。
タイムゾーンの確認
ローカル SQL ServerとAzure SQL Databaseそれぞれで、タイムゾーンを確認した結果は以下の通りで、ローカル SQL Serverのタイムゾーンは日本時間、Azure SQL DatabaseのタイムゾーンはUTCであることが確認できる。
1 | SELECT CURRENT_TIMEZONE() |
タイムゾーン一覧の表示
SQL Serverでサポートしているタイムゾーンは、sysスキーマのtime_zone_infoテーブルで確認できる。以下は、ローカル SQL Serverでタイムゾーンを表示した結果となる。
<15件分のタイムゾーンを表示した結果>
1 | SELECT top 15 * FROM sys.time_zone_info |
<UTCと日本時間のタイムゾーンを表示した結果>
1 | SELECT * FROM sys.time_zone_info WHERE name in ('UTC', 'Tokyo Standard Time') |
システム日時の確認
ローカル SQL ServerとAzure SQL Databaseそれぞれで、システム日時を確認した結果は以下の通りで、ローカル SQL Serverでは日本時間が、Azure SQL Databaseでは日本時間の9時間前の値が表示されることが確認できる。なお、下記画像は、2023/5/3 19:20に実行した結果となっている。
1 | SELECT CURRENT_TIMESTAMP |
現在日時をUTCから日本時間に変換して表示
AT TIME ZONE関数を利用することで、Azure SQL Database上での現在日時を、UTCから日本時間に変換することができる。その結果は、以下の通り。なお、下記画像は、2023/5/3 19:21に実行した結果となっている。
1 | SELECT CURRENT_TIMESTAMP AT TIME ZONE 'UTC' AT TIME ZONE 'Tokyo Standard Time' |
要点まとめ
- Azure SQL Database上での現在日時を、UTC(協定世界時)から日本時間に変換するには、AT TIME ZONE関数を利用すればよい。