---
title: "Datumformatering i MySQL"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/159065-datumformatering-i-mysql"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "MickeA.com"
published: "2007-04-09T12:10:16.000Z"
updated: "2007-04-14T10:38:20.000Z"
replies: 5
views: 385
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/159065-datumformatering-i-mysql"
---

# Datumformatering i MySQL

## #1 — MickeA.com, 2007-04-09T12:10Z

Tjena
Håller på och bygger om en sida som i dagsläget använder en Accessdatabas.
Flytten kommer ske till MySQL och har dykt på lite problem med datumformateringen i en SQL-Fråga.
Såhär ser frågan ut i Access: (Hämtar ut det jag vill ska hämtas)

```
q =	"SELECT YEAR(gStartDate) AS ar, MONTH(gStartDate) AS man, lName, gId, gName, gDayTime, gStartDate, gPlace, gTrainer, gTrainer2 "  &_
	"FROM tbl_sSchool_levels sl INNER JOIN tbl_sSchool_groups sg " &_
	"ON sl.lId = sg.lId " &_
	"WHERE YEAR(sg.gStartDate) = YEAR(NOW()) " &_
	"AND DATEDIFF('m', sg.gStartDate, NOW()) < 4 " &_
	"ORDER BY 2 DESC, 1 DESC, sl.sOrder ASC, sg.sOrder ASC"
```

Såhär har jag gjort för att få samma resultat i MySQL:

```
q =	"SELECT EXTRACT(YEAR FROM gStartDate) AS ar, EXTRACT(MONTH FROM gStartDate) AS man, lName, gId, gName, gDayTime, gStartDate, gPlace, gTrainer, gTrainer2 "  &_
	"FROM tbl_sSchool_levels sl INNER JOIN tbl_sSchool_groups sg " &_
	"ON sl.lId = sg.lId " &_
	"WHERE EXTRACT(YEAR FROM sg.gStartDate) = EXTRACT(YEAR FROM CURDATE()) " &_
	"AND DATEDIFF(EXTRACT(MONTH FROM sg.gStartDate), EXTRACT(MONTH FROM CURDATE())) < 4 " &_
	"ORDER BY 2 DESC, 1 DESC, sl.sOrder ASC, sg.sOrder ASC"
```

Men med ovanstående fråga hämtas inget alls ut, utan det blir *rs.EOF*

Är det något jag glömt?

Tack!

Permalänk: https://www.webforum.nu/p/159065

## #2 — Peter S, 2007-04-09T14:47Z

```
q =	"SELECT YEAR(gStartDate) AS ar, MONTH(gStartDate) AS man, lName, gId, gName, gDayTime, gStartDate, gPlace, gTrainer, gTrainer2 "  &_
	"FROM tbl_sSchool_levels sl INNER JOIN tbl_sSchool_groups sg " &_
	"ON sl.lId = sg.lId " &_
	"WHERE YEAR(sg.gStartDate) = YEAR(NOW()) " &_
	"AND MONTH(CURDATE()) - MONTH(sg.gStartDate) < 4 " &_
	"ORDER BY 2 DESC, 1 DESC, sl.sOrder ASC, sg.sOrder ASC"
```

Permalänk: https://www.webforum.nu/p/1957650

## #3 — MickeA.com, 2007-04-09T15:04Z

Funkar kanon!
Tack, men varför funkar inte DateDiff på samma sätt?
Har kollat just tid / datum referensen för MySQL noga och upptäckt att man inte kan ange vilken typ av "sak" (timmar, minuter osv.) man vill ha resultatet i.

Permalänk: https://www.webforum.nu/p/1957655

## #4 — MickeA.com, 2007-04-14T09:19Z

Tjena igen
Nu har jag ett liknande problem igen, så postar i den här tråden istället.
Jag ska med följande fråga plocka ut fakturor som förfallit, alltså där *fakturadatum + förfallodagar \<= dagens datum*.

Har gjort såhär:

```
sSql =	"SELECT " &_
	"t1.nId, t1.gId AS anm_gId, t1.nName, t1.nPersNum, t1.nAnmTime, t1.nAnmQueued, t1.rec_magic_num, t1.fakt_date, t1.fakt_forfallo, t1.bet_date, " &_
	"t2.gId AS gru_gId, t2.lId, t2.gName, t2.gDayTime, t2.gStartDate, t2.gEndDate, t2.gPlace, t2.gPrice " &_
	"FROM tbl_sSchool_notifications t1 INNER JOIN tbl_sSchool_groups t2 " &_
	"ON t1.gId = t2.gId " &_
	"WHERE EXTRACT(DAY FROM t1.fakt_date) + t1.fakt_forfallo <= EXTRACT(DAY FROM CURDATE()) " &_
	"[b]...[/b] " &_
	"ORDER BY t2.lId ASC, t2.gId ASC, t1.nAnmTime ASC"
```

Där den fetstilta raden med punkterna är måste jag få in en kontroll på en  kolumn som heter *bet_date*, denna kolumn får **inte** vara ett datum.

Tidigare i Access så använde jag mig av *...AND isDate(bet_date)* men det verkar inte finnas något sådant i MySQL..?

Skulle behöva lösa det här, tack för att alla förslag!

Permalänk: https://www.webforum.nu/p/1958822

## #5 — Peter S, 2007-04-14T10:03Z

Red./ 

```
AND coalesce(date(bet_date), null) is null
```

Permalänk: https://www.webforum.nu/p/1958834

## #6 — MickeA.com, 2007-04-14T10:38Z

Aha, sorry.
Fältet är av typen datetime och eftersom jag exporterat databasen från Access så kan de fält som redan existerar innehålla tex. *NULL*.
Men de nya poster som skapas innehåller som default *0000-00-00 00:00:00*.

Därför hade det varit bra med en funktion liknande *IsDate()* i Access.
Men jag ska prova det som står ovan, tack!

**Fungerar fint, tack!**

Permalänk: https://www.webforum.nu/p/1958845

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/159065-datumformatering-i-mysql
