Oracle, MySQL, PostgreSQL、SQL Serverの各DB上で、日付(時分秒含む)と文字列を相互変換を行うことができるが、その変換方法は、接続先DBによって異なっている。
今回は、各DB上で日付(時分秒含む)と文字列を相互変換してみたので、そのSQLを共有する。
前提条件
下記記事に記載した方法で、A5M2を利用して各DBに接続できていること。
やってみたこと
Oracleの場合の実行結果
Oracleの場合の実行結果は以下の通り。
1 2 3 4 5 | SELECT sysdate AS now_date , TO_CHAR(sysdate, 'yyyy/mm/dd hh24:mi:ss') AS now_str , TO_DATE(TO_CHAR(sysdate, 'yyyy/mm/dd hh24:mi:ss') , 'yyyy/mm/dd hh24:mi:ss') AS now_str_date FROM dual |
なお、OracleのTO_DATE関数、TO_CHAR関数や日付の書式関数については、以下のサイトを参照のこと。
http://oracle.se-free.com/dml/07_todate.html
MySQLの場合の実行結果
MySQLの場合の実行結果は以下の通り。
1 2 3 4 | SELECT now() AS now_date , DATE_FORMAT(now(), '%Y/%m/%d %k:%i:%s') AS now_str , STR_TO_DATE(DATE_FORMAT(now(), '%Y/%m/%d %k:%i:%s') , '%Y/%m/%d %k:%i:%s') AS now_str_date |
なお、MySQLのDATE_FORMAT関数、STR_TO_DATE関数や日付の書式関数については、以下のサイトを参照のこと。
https://php.programmer-reference.com/mysql-datetime-format/
https://php.programmer-reference.com/mysql-str_to_date/
PostgreSQLの場合の実行結果
PostgreSQLの場合の実行結果は以下の通り。
1 2 3 | SELECT now() AS now_date , TO_CHAR(now(), 'yyyy/mm/dd hh24:mi:ss') AS now_str , CAST(TO_CHAR(now(), 'yyyy/mm/dd hh24:mi:ss') AS timestamp) AS now_str_date |
なお、PostgreSQLのTO_CHAR関数、CAST関数や日付の書式関数については、以下のサイトを参照のこと。
https://postgresweb.com/post-399
SQL Serverの場合の実行結果
SQL Serverの場合の実行結果は以下の通り。
1 2 3 | SELECT GETDATE() AS now_date , FORMAT(GETDATE(), 'yyyy/MM/dd HH:mm:ss') AS now_str , CONVERT(DATETIME, FORMAT(GETDATE(), 'yyyy/MM/dd HH:mm:ss')) AS now_str_date |
なお、SQL ServerのFORMAT関数、CONVERT関数や日付の書式関数については、以下のサイトを参照のこと。
https://sqlserver.programmer-reference.com/sqlserver-date-format/
https://sql-oracle.com/sqlserver/?p=189
要点まとめ
- Oracle, MySQL, PostgreSQL、SQL Serverの各DB上で、日付(時分秒含む)と文字列を相互変換を行うことができるが、その変換方法は、接続先DBによって異なっている。