よくある差分に限定してまとめる。
## 列名のクォーテーション
[[MySQL]]はバッククォートが使えるが、[[PostgreSQL]]は使えない。つまり以下は[[PostgreSQL]]ではNG。
```sql
CREATE TABLE hoge (
`col1` INT PRIMARY KEY
)
```
## 日付型
[[MySQL]]では[[DATETIME型 (MySQL)|DATETIME型]]だが、[[PostgreSQL]]では[[TIMESTAMP型 (PostgreSQL)|TIMESTAMP型]]を使う。
> [!question]
> [[MySQL]]にも[[TIMESTAMP型 (MySQL)|TIMESTAMP型]]はある。8.0.19からはオフセットも指定できるようになったので、そちらに統一する流れ??
## ENUM
[[MySQL]]では[[ENUM型 (MySQL)|ENUM型]]を使えるが、[[PostgreSQL]]には存在しないため[[列にEnumを定義 (PostgreSQL)|列にEnumを定義]]し、その型を使う。
`MYSQLの場合`
```sql
CREATE TABLE hoge (
`col1` ENUM('option1', 'option2', 'option3')
)
```
`PostgreSQLの場合`
```sql
CREATE TYPE options AS ENUM ('option1', 'option2', 'option3');
CREATE TABLE hoge (
col1 OPTIONS
)
```
## ON UPDATE CURRENT_TIMESTAMP
[[MySQL]]にしかない構文。