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'.