---
title: "DateAdd i sql?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/101295-dateadd-i-sql"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Asa"
published: "2004-04-11T22:30:07.000Z"
updated: "2006-10-23T18:45:16.000Z"
replies: 11
views: 900
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/101295-dateadd-i-sql"
---

# DateAdd i sql?

## #1 — Asa, 2004-04-11T22:30Z

Jag tänkte hämta lite info från databasen och ska då kolla om datumet i databasen+20 dagar är tidigare än dagens datum. Det ska vara till ett fakturasystem där alla förfallna fakturor ska visas.

Hur ska man skriva?!

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

## #2 — LeonL, 2004-04-11T22:35Z

Du kan kolla om datumet i databasen är tidigare än dagens datum - 20 dagar. ;)

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

## #3 — Asa, 2004-04-11T22:38Z

Det kanske man kan jaa...ska testa

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

## #4 — Jesper T, 2004-04-11T22:46Z

Det borde ju gå att göra något liknande:

```
SELECT * FROM tabell WHERE DATEDIFF(day, payday, now()) > 20
```

\*payday=kolumen när räkningen skall betalas

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

## #5 — Asa, 2004-04-11T22:56Z

Det funkade ju bra men fick skriva så här:

```
SELECT * FROM tabell WHERE DATEDIFF('d', datum, now()) > 20
```

Är Access-databas. Kanske därför?

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

## #6 — Poffe, 2004-04-12T02:17Z

> **Asa skrev:**
>
> Är Access-databas. Kanske därför?

Nej, det var bara Jesper som skrivit fel. 'd' är det korrekta inte day.

<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctDatePart.asp>

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

## #7 — LarsG, 2004-04-12T14:35Z

Flyttas från ASP

Korrekt? Datediff i någon form är inte korrekt.

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

## #8 — Jesper T, 2004-04-12T14:38Z

Vad skall det vara då?

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

## #9 — Jesper T, 2004-04-14T19:10Z

> **LarsG skrev:**
>
> Korrekt? Datediff i någon form är inte korrekt.

Om det är fel med Datediff, vad skall det då vara i stället?

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

## #10 — LarsG, 2004-04-15T07:19Z

SQL standarden har stöd för intervall för att hantera tidsskillnader. Ett intervall kan till exempel vara 3 timmar 14 minuter och 11 sekunder.  Med datediff så kan man bara hantera hela timmar /minuter /sekunder etc.

För att beräkna en tidsskillnad så gör man t.ex.

```
select (timestampValue1 - timestampValue2) hour(4) to second from t
```

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

## #11 — MickeA.com, 2006-10-23T18:40Z

Tjena
Nu sitter jag på nästan samma problem.
Har ett fakurasystem, där jag nu ska visa alla fakturor som förfallit.

Det som rör till det hela lite är att förfallodagarna är olika på varje faktura, det kan vara allt mellan 5 och 30 dagar.

Mina fält är:

```
fakt_date     datum
fakt_forfallo     tal
```

Nu har jag 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 IsDate(t1.fakt_date) " &_
	"AND DATEADD('d', t1.fakt_forfallo, t1.fakt_date) < NOW " &_
	"ORDER BY t2.lId ASC, t2.gId ASC, t1.nAnmTime ASC"
```

Problemet är att jag får "Typblandningsfel i villkorsuttryck" eller nått annat felmeddelande, men kör jag istället:

```
...WHERE ... AND DATEADD('d', 1, #2006-10-20#) < NOW
```

Då vet jag att resultatet ska bli två stycken fakturor, där jag manipulerat datumen. IStället för att skriva ut dessa två, skrivs 516 fakturor ut, vilket är det totala antal som finns i tabellen.
Alltså är det någon som är fel.
KOllar jag hur ovanstående löst det, så bör det vara med DATEDIFF, men jag är lite vimsig just nu efter alla försökt och är inte riktigt med på hur jag ska göra.

Tack på förhand!

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

## #12 — MickeA.com, 2006-10-23T18:45Z

Det där var ju inte så svårt om man testade lite olika saker.
Följande kod funkar utmärkt och visar exakt det jag vill:

```
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 IsDate(t1.fakt_date) " &_
	"AND DATEDIFF('d', t1.fakt_date, NOW()) >= t1.fakt_forfallo " &_
	"ORDER BY t2.lId ASC, t2.gId ASC, t1.nAnmTime ASC"
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/101295-dateadd-i-sql
