Tipos en MySql/MariaDb
Índice
Algunas características peculiares de los tipos de datos en MySql/MariaDB y su uso en Rust usando la librearía Sqlx.
Chrono
Para usar los tipos Timestamp, Datetime, Time y Date podemos usar la librería chrono.
Para Timestamp usamos
chrono::DateTime<chrono::Utc>
. El problema es que esta representa siempre añadiendo el sufijo UTC, pero este es incorrecto, así que tenemos que eliminarlo. Ninguna otra representación de las posibles funciona, así que usando.to_string()
es suficiente. En MySql/MariaDb Timestamp siempre es Utc, así que la hora que representa es en Utc+00:00. De su documentación:The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.
De hecho en este extracto se ve otro problema: si usamos DateTime::<Utc>::default()
, crea una fecha '1970-01-01 00:00:00', no válida porque solo se puede a partir del timestamp 1, que se corresponde con '1970-01-01 00:00:01'.