---
title: "Problem med DateAdd"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/72074-problem-med-dateadd"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Wiklund!!"
published: "2003-03-25T00:07:47.000Z"
updated: "2003-04-06T00:57:38.000Z"
replies: 21
views: 502
page: 1
pages: 2
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/asp/72074-problem-med-dateadd"
---

# Problem med DateAdd

_Sida 1 av 2._

## #1 — Wiklund!!, 2003-03-25T00:07Z

Jobbar med ett litet statistik script till min community. Jag har gjort ett diagram för att visa antal inloggningar de 10 senaste dagarna. Problemet jag har är att jag inte lyckas räkna de olika inloggningarna per dag.

Så här ser koden ut där jag räknar logins:

```
set count = connect.execute("SELECT Count(*) AS logins1 FROM logins WHERE logindate = '" & DatePart("d",date) & "'")
logins1 = count("logins1")

set count = connect.execute("SELECT Count(*) AS logins2 FROM logins WHERE logindate = '" & DatePart("d",-1,now()) & "'")
logins2 = count("logins2")
```

Är det inte så man använder DatePart? Har testat med DataAdd men det fungerar tyvärr inte häller.

edit: logindate innehåller ett Now() datum. Använder mySQL.

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

## #2 — Jesper T, 2003-03-25T00:18Z

Det borde vara dateAdd
dateAdd("d",-1,date)     :     skall ge gårdagens datum

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

## #3 — @nders, 2003-03-25T05:57Z

Som JesperT skrev: Nej, det är inte så man använder DatePart(). Kontrollera alltid hur din färdiga SQL-fråga ser ut med en utskrift, så ser du att värden inte blir som du önskar. Hur är datumen lagrade? Som rena datum, eller som datum-tidvärden? Är det datumfält i tabellen?

Kika i [VBScript-referensen](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vtorifunctions.asp) så ser du hur man använder datumfunktionerna.

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

## #4 — Engine^, 2003-03-25T07:28Z

```
set count = connect.execute("SELECT Count(*) AS logins2 FROM logins WHERE logindate = '" & DateAdd("d", -1, Now()) & "'")
logins2 = count("logins2")
```

Referenser är guld värda... [MySQL Reference](http://www.mysql.com/doc/en/Reference.html).

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

## #5 — Wiklund!!, 2003-03-26T08:18Z

Får det inte att fungera. Sparar datumen i Now() format i en kolum som har typen DATETIME.
Har inte en aning om varför det inte fungerar. tycker ju att det borde göra det.

Om jag gör så här får jag fram nått iaf:

```
WHERE logindate > '" & DateAdd("d", -1, Now()) & "'")
```

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

## #6 — rymdknark, 2003-03-26T09:03Z

Prova:

```
WHERE logindate > #" & DateAdd("d", -1, Now()) & "#")
```

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

## #7 — LarsG, 2003-03-26T09:25Z

Problemet är att du använder now när du lagrar data. now() innefattar även tid så det blir aldrig lika när du bara jämför med ett datum. 

```
set count = connect.execute("SELECT Count(*) AS logins2 " & _
" FROM logins " &_
" WHERE to_days(current_date) - to_days(logindate) between 0 and 1 " & _
" group by to_days(logindate) "
" order by to_days(logindate) "
```

Så får du båda värdena i samma fråga ordnade med värdet för gårdagen först. Om du bara vill lagra datumet så är det bättre att använda funktionen current_date i SQL.

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

## #8 — Wiklund!!, 2003-03-26T11:27Z

Tack så mycket! Nu vet jag principen. Men om det inte finns någon post det datumet så får jag upp detta felmeddelande:

ADODB.Field (0x800A0BCD)
Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.

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

## #9 — @nders, 2003-03-26T11:36Z

Ja, du måste alltid kontrollera att recordsetet inte är tomt innan du försöker använda värden (som då inte finns).

```
if not objRS.EOF then
   ' det finns data, skriv ut, eller vad du nu ska göra
else
   ' recordsetet är tomt, gör nåt annat
end if
```

mvh

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

## #10 — Wiklund!!, 2003-03-26T11:58Z

Tack så mycket. Fungerar fint.
Men som vanligt har jag en fråga till :)
Någon som vet hur jag ska göra för att få fram den dagen som det gjordes flest inloggningar samt antalet. Datumet är ett plus i kanten, det viktiga är antalet.

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

## #11 — Jesper T, 2003-03-26T16:03Z

Nu vet jag inte vad dina kolumner heter, men min princip är denna:

```
"SELECT Top 1 * FROM members ORDER BY logins"
```

 Sedan skriver du väl bara ut datumet och annat som vanligt.

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

## #12 — Wiklund!!, 2003-03-26T22:32Z

Problemet är att i tabellen som heter logins har jag bara sparat: Id och datumet. Jag skulle vilja få fram den dagen som har flest inloggningar.
Har testat lite med denna kod:

```
SQL = "select count(*) as antal, logindate from logins group by logindate order by 1 DESC"
rs.Open SQL, Connect, 1, 2

if not rs.eof then
response.write ""&rs("logindate")&": "&rs("antal")&"."
end if

rs.close
```

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

## #13 — solbulle, 2003-03-26T22:43Z

Om man använder sig av den sqg-fråga du har och sorterar på antalet då? Kan det fungera? (Jag har ingen aning...)

```
set count = connect.execute("SELECT Count(*) AS logins2 " & _
" FROM logins " &_
" WHERE to_days(current_date) - to_days(logindate) between 0 and 1 " & _
" group by to_days(logindate) "
" order by logins2 "
```

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

## #14 — Wiklund!!, 2003-03-27T07:10Z

Det är nog nått sånt man ska göra, men fick felmeddelandet:

```
Feltyp:
ADODB.Recordset (0x800A0BB9)
Parametrarna är felaktiga, ligger utanför tillåtet intervall eller skapar en inbördes konflikt.
```

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

## #15 — @nders, 2003-03-27T07:12Z

Hur ser din kod ut då? Rätt namn på connection-objekt etc?

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

## #16 — Wiklund!!, 2003-03-27T09:34Z

Hela koden:

```
Set Connect   = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Connect.Open "driver=MySQL;server=localhost;uid=wiklund;pwd=jadu;database=es;option=16384" 

SQL = connect.execute("SELECT Count(*) AS logins2 FROM logins WHERE to_days(current_date) - to_days(logindate) between 0 and 1 group by to_days(logindate) order by logins2")
rs.Open SQL, Connect, 1, 2

if not rs.eof then
response.write ""&rs("logindate")&": "&rs("logins2")&"."
end if

rs.close
connect.close
```

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

## #17 — Wiklund!!, 2003-03-28T10:57Z

Ingen som vet?

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

## #18 — @nders, 2003-03-28T11:04Z

Det har nog inte med saken att göra, men till att börja med har du inget fält som heter logindate i recordsetet rs. Ta bort det ur utskriften.

I övrigt, detta borde fungera:

```
Set Connect   = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Connect.Open "driver=MySQL;server=localhost;uid=wiklund;pwd=jadu;database=es;option=16384" 

SQL = "SELECT Count(*) AS logins2 FROM logins WHERE to_days(current_date) - to_days(logindate) between 0 and 1 group by to_days(logindate) order by logins2"
rs.Open SQL, Connect, 1, 2

if not rs.eof then
response.write rs("logins2")
end if

rs.close
connect.close
```

Du kommer nog få något nytt felmeddelande nu, jag är lite osäker på vad du vill ha ut av SQL-frågan.

Mvh

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

## #19 — Wiklund!!, 2003-03-29T01:14Z

Fick inget felmeddelande, men tyvärr fick jag inte rätt tal utskrivet. 
Det jag vill få fram är alltså vilken dag det har gjorts flest inloggningar.

Tabbellen ser ut så här:
Id
Logindate (DATETIME)

När jag kollar förhand i databasen så är rekordet 12. Med denna kod fick jag ut 1.

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

## #20 — solbulle, 2003-03-29T03:03Z

Skjuter vilt från höften, antingen skriver du, sql-raden:

```
SQL = "SELECT Count(*) AS logins2 FROM logins WHERE to_days(current_date) - to_days(logindate) between 0 and 1 group by to_days(logindate) order by logins2 desc"
```

Eller så här: (ev. lägg till  desc)

```
Set Connect   = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Connect.Open " driver=MySQL;server=localhost;uid=wiklund;pwd=jadu;database=
es;option=16384" 

SQL = "SELECT Count(*) AS logins2, logindate FROM logins WHERE to_days(current_date) - to_days(logindate) between 0 and 1 group by to_days(logindate) order by logins2"
rs.Open SQL, Connect, 1, 2

if not rs.eof then
response.write rs("logins2")
end if

rs.close
connect.close
```

Där borde du väl även kunna plocka ut logindate...

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/72074-problem-med-dateadd  
Nästa sida: https://www.webforum.nu/amne/asp/72074-problem-med-dateadd/page2.md
