4520 shaares
1 résultat
taggé
timestamp
MySQL conseil d'utiliser le type DATETIME pour stocker des dates, mais côté JVM quel est le type de données à utiliser ? Je résume ici la réponse :
- java.sql.Date permet de stocker une date mais sans l'heure.
- java.sql.Time permet de stocker l'heure mais sans la date.
- java.sql.Timestamp permet de stocker les deux.
Donc le type qui se rapproche le plus de DATETIME c'est java.sql.Timestamp.
Edit : et côté MySQL, que se passe-t-il ?
MySQL dispose de quatre types pour stocker les données temporelles :
- DATE pour stocker une date mais sans l'heure.
- TIME pour stocker une heure mais sans la date.
- DATETIME pour stocker un timestamp allant de 1000-01-01 00:00:00.000000 à 9999-12-31 23:59:59.999999.
- TIMESTAMP pour stocker un timestamp au format UTC allant de 1970-01-01 00:00:01 UTC à 2038-01-19 03:14:07 UTC.
Donc côté base de données vous êtes dans deux cas de figure qui ont eux-mêmes des sous-cas :
- Soit votre SI est mono-timezone et dans ce cas là, DATETIME vous accorde une plage de données plus large.
- Soit votre SI est multi-timezone (comme chez mon client actuel) et dans ce cas là vous avez deux sous-cas :
- Soit vous gérez la timezone côté serveur (Kotlin / Rust par exemple) => DATETIME.
- Soit vous gérez la timezone côté base et vous lui passez uniquement des timestamp UTC => TIMEZONE.