webForumDet fria alternativet

Bäst att hämta årtal med Like?

Databaser & SQLur Databashanterare & SQL

4 svar · 490 visningar · startad av Oputres

Medlem sedan feb. 2004333 inlägg
Frågan#1

Gruff, min SQL-bok har försvunnit...

Hur som helst så skulle jag behöva hämta alla poster i min Accessdatabas där årtalet är t.ex. 2006. Men, datumen ligger i formatet 2006-01-01. Är det här lämpligast att använda Like enligt nedan:

Select * From tbl Where datum Like '2006' ORDER BY datum Desc

Eller finns det något smartare alternativ?

Medlem sedan dec. 20003 563 inlägg
#2
... where year(datum) = 2006 ...
Medlem sedan juni 200032 967 inlägg
#3

Det är dåligt att använda LIKE, du vet egentligen inte hur datumet lagras i själva databasen, bara hur det presenteras.

Använd Year.

Select * From tbl Where year(datum) = 2006 ORDER BY datum Desc

Datumfunktioner till datumfält, är grundregeln helt enkelt. :)

mvh

Medlem sedan feb. 2004333 inlägg
#4

Aaah, såklart. Det går ju att använda även här. Tänkte inte på det... :)

Medlem sedan dec. 200012 464 inlägg
#5

Ur optimeringssynpunkt är det oftast bättre att ange ett slutet interval.

Select * 
  From t 
 Where datum between #2006-01-01# and #2006-12-31#
 ORDER BY datum Desc

De flesta DBMS verkar inte använda index om man använder en funktion på detta sätt.
Nu vet jag inte om detta gäller för Access.

138 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)