---
title: "WHERE mid(pDate, 6, 2) ?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/21898-where-mid-pdate-6-2"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Mz"
published: "2002-01-20T20:40:00.000Z"
updated: "2002-01-20T22:21:00.000Z"
replies: 9
views: 178
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/21898-where-mid-pdate-6-2"
---

# WHERE mid(pDate, 6, 2) ?

## #1 — Mz, 2002-01-20T20:40Z

Hejsan!

Detta fungerar fint på min IIS men inte på Baloou, någon som kan hjälpa mig skapa en bättre SQL-fråga?

```
strToDay = mid(Date(), 6, 2)

	If strToDay < 10 Then
		strToDay = "0"& i
	Else
		strToDay = strToDay
	End if

SQL = "SELECT * FROM play WHERE mid(pDate, 6, 2) = "& strToDay &" ORDER BY pDate"
Set RecSet = Connect.Execute(SQL)
```

• i är en FOR-sats som räknar 1 to 3
• pDate är av datatypen kort Datum/Tid, ex 2002-01-20

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

## #2 — LarsG, 2002-01-20T21:14Z

Det hör nog ihop med olika datumformat.

```
SQL = "SELECT * FROM play WHERE day(pDate) = day(now()) ORDER BY pDate"
Set RecSet = Connect.Execute(SQL)
```

red: Förstår inte avsikten med for-loopen. Speciellt kontrollen om StrToDay \< 10

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

## #3 — Mz, 2002-01-20T21:19Z

Hej LarsG.

Det jag vill göra är att hämta alla poster i respektive månad.

Varje post har ett eget datum, ex. 2002-01-20, själva månaden plockar jag ut med mid(pDate, 6, 2), men kan jag inte använda det i SQL-satsen?

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

## #4 — Mz, 2002-01-20T21:22Z

Jag postar hela den snutten så kanske du förstår bättre vad det är jag försöker åstadkomma ;)

```
Response.Write "<table border=0 cellpadding=10><tr>"& vbcrlf

	strToDay = mid(Date(), 6, 2)
	For i = strToDay To 3

		If strToDay < 10 Then
			strToDay = "0"& i
		Else
			strToDay = strToDay
		End if

		SQL = "SELECT * FROM play WHERE mid(pDate, 6, 2) = "& strToDay &" ORDER BY pDate"
		Set RecSet = Connect.Execute(SQL)

			Dim rsDate
			rsDate = RecSet("pDate")
			Response.Write "<td valign=top><b>"& ShowManad(mid(rsDate, 6, 2)) &"</b><br>"& vbcrlf
			Response.Write SQL &"<br><br>"

			Do Until RecSet.EOF

				Dim rsDate2, rsPlace, rsCity
				rsDate2 = RecSet("pDate")
				rsPlace = RecSet("pPlace")
				rsCity = RecSet("pCity")
				If rsDate2 > Date() Then
					Response.Write rsDate2 &" "& rsPlace &" i "& rsCity &"<br><img src=images/trans.gif hight=5 width=5><br>"& vbcrlf
				Else
					Response.Write "<s>"& rsDate2 &" "& rsPlace &" i "& rsCity &"</s><br><img src=images/trans.gif hight=5 width=5><br>"& vbcrlf
				End If
			
			RecSet.MoveNext
			If RecSet.EOF Then Response.Write "</td>"
			Loop

	Next
			

Response.Write "</tr></table>"& vbcrlf
```

\[Redigerat av Mz den 20 jan 2002\]

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

## #5 — LarsG, 2002-01-20T21:40Z

Det finns en funktion som heter month som du skulle kunna använda. Den returnerar månaden i ett datum som ett nummer mellan 1 och 12.

Jag förstår ändå inte denna

```
For i = strToDay To 3
```

Vill du skriva ut för tre månader framåt? I så fungerar det enbart i januari. Du kommer aldrig in i loopen om månad \> 3

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

## #6 — Mz, 2002-01-20T21:47Z

Hur ska jag använda month i min snutt här då?

Gällande For i = strToDay To 3 stämmer det nu när du säger det... :(
Men hur 17 hämtar jag då de denna månads poster samt de 2 nästkommande?

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

## #7 — LarsG, 2002-01-20T21:56Z

Varför behöver du loopa överhuvudtaget?

Du kan väl skriva sql-satsen som

```
sql = "select * from play where pDate between now() and dateadd('m',2,now())"
```

\[Redigerat av LarsG den 20 jan 2002\]

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

## #8 — Mz, 2002-01-20T22:06Z

Jag var inne på det också, men jag fattade inte hur jag skulle göra för att lägga varje månad i en ny kolumn.

Det fungerar bra med bägge modellerna iaf. :) , t.o.m min server-ätande-amatör-kod fungerade efter en stund... ;)

Om jag nu vill dela upp dem i 3 table-kolumner, hur görs det på ett smidigt sätt? Då måste man väl loopa, eller?

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

## #9 — Mz, 2002-01-20T22:20Z

Jag kör nu med:
FOR i = 0 To 2
strDate = DateAdd("m",i,Date())
SQL = "SELECT \* FROM play WHERE datediff('m',pDate,#" & strDate & "#) = 0 ORDER BY pDate"

Fungerar bra, så det får ligga så. ;)
Tack för all hjälp!

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

## #10 — LarsG, 2002-01-20T22:21Z

Jo, det är kanske enklast att loopa. Annars så kan man titta på posterna och hålla reda på när det kommer en ny månad.

```
pmonth = 0
while not rs.eof 
if pMonth <> month(rs("pdate")) then
   'ny månad
   pmonth = month(rs("pdate")) 
end if
'...
wend
```

Jag kom på att den select jag skrev i förra inlägget inte fungerar så bra. Den tar bara poster från dagens datum och inte från den första i månaden.

```
sDate = cdate(year(now()) & "-" & month(now()) & "-01")
eDate = dateadd("d",-1,Dateadd("m",3,sDate))
sql = "select * from play where pDate between #" & sDate & "# and #" & eDate & "# order by pDate "
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/21898-where-mid-pdate-6-2
