dbwebb-se / databas

Course repo for database course (dbw).
Other
4 stars 2 forks source link

Formattera datum i JavaScript och i SQL #28

Closed mosbth closed 2 years ago

mosbth commented 3 years ago

Ibland vill man formattera ett datum för utskrift, till exempel om man tar en datum från en databas och vill skriva ut på ett enkelt sätt med YYYY-MM-DD.

I JavaScript kan man formattera datum enligt följande (förslag tagna från https://stackoverflow.com/questions/3552461/how-to-format-a-javascript-date).

var today = new Date().toISOString().slice(0, 10);

var today = new Date().toJSON().slice(0, 10);

Precis som man kan läsa i SO-tråden så fungerar detta endast tillförlitligt om man inte bryr sig om tidszoner, då både .toISOString() och .toJSON() returnerar datumet i UTC-format, vilket kan ställa till det timmarna kring midnatt ur ett svenskt perspektiv.

// UTC+1 trouble with timezone
var foo = new Date(2019, 0, 21, 0, 0, 0);     // 2019-01-21 00:00:00
console.log(foo.toISOString().slice(0, 10));  // 2019-01-20

När man formatterar ett datum, i en databas-rapport, så kan det vara enklare att formattera datumet med SQL, istället för att behöva formattera datumet i efterhand med ett programmeringsspråk.

Det finns en inbyggd funktion DATE_FORMAT() som kan hjälpa dig.

mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2019-01-21 15:58:54 |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT(NOW(), "%Y-%m-%d");
+--------------------------------+
| DATE_FORMAT(NOW(), "%Y-%m-%d") |
+--------------------------------+
| 2019-01-21                     |
+--------------------------------+
1 row in set (0.00 sec)