PostgreSQL:SQLで月日のゼロ埋めを消す方法
既存のシステムを改造していて、月日の表示が04月03日になっていることに気がつきました。
ソースコードを確認すると、SQLで取得できた値をそのまま表示していました。
SQLを確認すると、
SELECT to_char(date1, 'MM月DD日') AS char_date1 FROM test_table
となっていました。
テンプレートパターンには用意されていない
データベースはPostgreSQLを使っているので、to_char()関数のマニュアルを確認したところ、日付/時刻型の書式テンプレートパターンには、ゼロ埋めをしないパターンが存在しません。修飾子が用意されている
to_char()関数のマニュアルを読んでいくと、日付/時刻書式用のテンプレートパターン修飾子のFM修飾子の説明として、FMはパターンの出力を固定長にするため、先頭にはゼロ、末尾には空白を追加してしまう機能を無効にします。
とありました。
以下のように適用すると、4月3日と表示されるようになりました。
SELECT to_char(date1, 'FMMM月FMDD日') AS char_date1 FROM test_table
最初からゼロ埋めしないテンプレートパターンが用意されていてもおかしくない気がしますが、PostgreSQL固有になってしまうから存在しないのでしょうか。
日付/時刻周りは、データベースによって扱いが異なっていた印象があるので、他のデータベースを利用するときに気にしてみます。