※ この記事にはアフィリエイトリンクが含まれます

データベースを扱う際、日付データは非常に重要な要素の一つです。しかし、データの入力や外部システムとの連携の都合上、日付が文字列(STRING型)として保存されることがあります。このような場合、適切なフォーマットで DATE 型に変換しないと、日付の計算やフィルタリングができず、不便な状況に陥ります。
本記事では、PostgreSQL において STRING 型のデータを DATE 型に変換する方法をわかりやすく解説します。基本的な TO_DATE() 関数の使い方から、異なるフォーマットの文字列を適切に処理する方法まで幅広く紹介します。
本記事の対象読者は以下のような方々です。
- PostgreSQL を使ってデータベースを運用している方
- 文字列として保存された日付を
DATE型に変換したい方 - 変換時のエラーを防ぐためのベストプラクティスを知りたい方
それでは、具体的な方法を見ていきましょう!
これから本格的にプログラミングを学びたい方へ
もしあなたがSQLのスキルだけでなく、「正規表現だけじゃなく、もっと本格的にプログラミングを学びたい」と思っているなら、実務レベルでのスキルが身につく「RareTECH」という学習サービスがおすすめです。
なんくる本気でやってみたい。でも何から始めたらいいか分からない。そんなときこそ、信頼できる学習環境に頼っていいんです。一人で悩む時間を、実務レベルの力に変えられます!
少しでも気になった方は、まずは無料カウンセリングで話を聞いてみるのがおすすめです。
文字列を日付に変換する方法
PostgreSQL では、STRING 型のデータを DATE 型に変換する方法として、主に TO_DATE() 関数 と ::DATE キャスト の 2 つの手法が利用できます。それぞれの使い方を詳しく見ていきましょう。
TO_DATE()関数を使う
TO_DATE() は、指定したフォーマットに従って文字列を DATE 型に変換する関数です。
基本構文は以下の通りです。
TO_DATE(text, format)text
変換対象の文字列format
日付のフォーマット(YYYY-MM-DDなど)
使用例
SELECT TO_DATE('2025-02-07', 'YYYY-MM-DD');実行結果
to_date
------------
2025-02-07
(1 row)
このように、'2025-02-07' という文字列を DATE 型に変換できます。
もし YYYY/MM/DD の形式で日付が保存されている場合は、次のように変換できます。
SELECT TO_DATE('2025/02/07', 'YYYY/MM/DD');また、DD-MM-YYYY のような形式で保存されている場合は、
SELECT TO_DATE('07-02-2025', 'DD-MM-YYYY');このように、TO_DATE() を使うことで、さまざまな形式の文字列を正しく DATE 型に変換できます。
::DATE キャストを使う
もう一つの方法として、文字列を ::DATE でキャストする方法があります。
これは、特に 標準的な日付フォーマット (YYYY-MM-DD) の文字列に適用できるシンプルな方法 です。
使用例
SELECT '2025-02-07'::DATE;実行結果
date
------------
2025-02-07
(1 row)この方法は TO_DATE() よりもシンプルですが、 異なるフォーマットの文字列(例: YYYY/MM/DD や DD-MM-YYYY)には対応していない ため、フォーマットが統一されている場合のみ有効です。
例えば、次のようなクエリではエラーとなります。
SELECT '07-02-2025'::DATE;ERROR: invalid input syntax for type date: "07-02-2025"この場合は TO_DATE('07-02-2025', 'DD-MM-YYYY') を使う必要があります。
どちらを使うべき?
| ケース | 推奨される方法 |
|---|---|
YYYY-MM-DD 形式の文字列を変換 | ::DATE |
YYYY/MM/DD や DD-MM-YYYY など異なるフォーマットの文字列を変換 | TO_DATE() |
| 文字列が確実に正しい日付形式かわからない場合 | TO_DATE() |
| シンプルな変換で高速に処理したい場合 | ::DATE |
これで、基本的な STRING → DATE の変換方法を理解できたかと思います!
STRING型からTIMESTAMP 型に変換する場合
文字列 (STRING) を DATE 型に変換する方法を紹介しましたが、実際のデータベースでは 日時情報 (TIMESTAMP) を扱うケース も多くあります。
PostgreSQL では、文字列を TIMESTAMP 型に変換する方法として、主に TO_TIMESTAMP() 関数 と ::TIMESTAMP キャスト の 2 つの手法が利用できます。それぞれの使い方を見ていきましょう。
TO_TIMESTAMP() 関数を使う
TO_TIMESTAMP() は、指定したフォーマットに従って文字列を TIMESTAMP 型に変換する関数です。
基本構文は以下の通りです。
TO_TIMESTAMP(text, format);text
変換対象の文字列format
日付のフォーマット(YYYY-MM-DD HH24:MI:SSなど)
使用例
SELECT TO_TIMESTAMP('2025-02-07 14:30:00', 'YYYY-MM-DD HH24:MI:SS');実行結果
to_timestamp
------------------------
2025-02-07 14:30:00+00
(1 row)このように、YYYY-MM-DD HH24:MI:SS 形式の文字列を TIMESTAMP 型に変換できます。
::TIMESTAMP キャストを使う
もう一つの方法として、文字列を ::TIMESTAMP でキャストする方法があります。
これは、特に 標準的な日付時刻フォーマット (YYYY-MM-DD HH:MI:SS) の文字列に適用できるシンプルな方法 です。
使用例
SELECT '2025-02-07 14:30:00'::TIMESTAMP;実行結果
timestamp
------------------------
2025-02-07 14:30:00
(1 row)この方法は TO_TIMESTAMP() よりもシンプルですが、 異なるフォーマットの文字列(例: DD-MM-YYYY HH:MI:SS)には対応していない ため、フォーマットが統一されている場合のみ有効です。
例えば、次のようなクエリはエラーになります。
SELECT '07-02-2025 14:30:00'::TIMESTAMP;ERROR: invalid input syntax for type timestamp: "07-02-2025 14:30:00"この場合は TO_TIMESTAMP('07-02-2025 14:30:00', 'DD-MM-YYYY HH24:MI:SS') を使う必要があります。
どちらを使うべき?
| ケース | 推奨される方法 |
|---|---|
YYYY-MM-DD HH:MI:SS 形式の文字列を変換 | ::TIMESTAMP |
DD-MM-YYYY HH:MI:SS や YYYY/MM/DD HH12:MI:SS AM など異なるフォーマットの文字列を変換 | TO_TIMESTAMP() |
| 文字列が確実に正しい日時形式かわからない場合 | TO_TIMESTAMP() |
| シンプルな変換で高速に処理したい場合 | ::TIMESTAMP |
DATE 型と TIMESTAMP 型の違いを理解し、適切な方法を選択することが重要です。
まとめ
本記事では、PostgreSQL における STRING 型のデータを DATE 型や TIMESTAMP 型に変換する方法 について解説しました。
PostgreSQL では、STRING 型のデータを適切な DATE または TIMESTAMP に変換することで、データの正規化や検索・計算の利便性が向上 します。
データの形式に応じて TO_DATE() や TO_TIMESTAMP()、::DATE や ::TIMESTAMP を適切に使い分ける ことで、エラーを防ぎながら効率的に処理できます。
これを機に、自分のデータに最適な方法を試してみてください!
PostgreSQLは、現場でも広く使われている信頼性の高いデータベースです。もしこれから本格的に学び、実務で通用する力をつけたい方には、RareTECHをチェックしてみてください。実案件ベースのカリキュラムで、あなたのスキルを次のステージへ引き上げてくれるはずです。





「本当にエンジニアとしてやっていけるか不安…」という方も、実践的な開発に関わることで、転職後の働き方を事前に体感できますよ。
実務で使えるDBスキルとともに、プログラミングスキルをちゃんと身につけたいなら、
RareTECHの無料カウンセリングで、学ぶ目的やゴールをプロと一緒に明確にしてみましょう。独学では得られない「実践的な成長の道筋」が見えてきます。




もしこの内容を通して、PostgreSQLについてさらに理解を深めたいと感じられたなら、信頼できる講座や書籍を紹介した別記事をご覧いただくのも良いかと思います。ご自身の学びに、きっとお役立ていただけるはずです。











コメント