webForumDet fria alternativet

Jämföra dagens datum mot datum i db

Databaser & SQL

10 svar · 369 visningar · startad av WebbisNet

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

Hur får jag denna SQL att fungera i MySQL

Set bday=objConn.Execute("Select * From tblUsers where persnr='"& varDate &"'")

Datatypen är date

Medlem sedan juni 200032 967 inlägg
#2

Det beror till mångt och mycket på två saker:

  1. vad innehåller variabeln varDate?
  2. På vilket sätt fungerar det inte?

Snälla, skriv ut färdiga SQL-frågor när du undrar varför något inte fungerar...

Medlem sedan feb. 20032 027 inlägg
#3

varDate innehåller dagens datum och enligt databasen ska en person ha födelsedag idag men SQL-satsen säger att ingen har det

Select * From tblUsers where persnr=2006-01-21
enligt utskriften av satsen

Medlem sedan juni 200032 967 inlägg
#4

Skriv ut!
Vad exakt innehåller variabeln?
Du måste se till att datumen är av rätt format!

Medlem sedan feb. 20032 027 inlägg
#5

utskriften blev Select * From tblUsers where persnr=2006-01-21 och det är samma format i databasen

Medlem sedan juni 200032 967 inlägg
#6

Konstigt, det verkar som om du tappade apostroferna vid copy/paste... :o

Och det råkar inte vara så att fältet i databasen innehåller tid också?

Medlem sedan feb. 20032 027 inlägg
#7

har ändrat datatypen till text, när jag har ' ' får flera personer födelsedag och alla har samma ålder och det stämmer inte enligt databasen, och varDate=Date() så det är ingen tid där eller i db-n

Set bday=objConn.Execute("Select * From tblUsers where persnr='"& varDate &"'")
ger detta
Select * From tblUsers where persnr='2006-01-21'

Den som ska fylla år har detta i databasen 1981-01-21

Medlem sedan juni 200032 967 inlägg
#8

?!?!?!

Det skall vara som du hade det från början, dvs datum skall lagras i fält av datumtyp, samt datum skall ha apostrofer runt sig i SQL-frågan. Om du då inte får rätt resultat av den "korrekta" SQL-frågan så innebär det att antingen är det ingen som har födelsedagen 21/1 år 2006, eller så tittar du på fel fält.

Medlem sedan feb. 20032 027 inlägg
#9

När jag använde Access så fungerade denna:
Set bday=objConn.Execute("Select * From tblUsers where month(persnr) = month(date()) and day(persnr) = day(date())")

men samma med MySQL blir:
[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '()) and day(persnr) = day(date())' at line 1

@nders skrev:

?!?!?!

Det skall vara som du hade det från början, dvs datum skall lagras i fält av datumtyp, samt datum skall ha apostrofer runt sig i SQL-frågan. Om du då inte får rätt resultat av den "korrekta" SQL-frågan så innebär det att antingen är det ingen som har födelsedagen 21/1 år 2006, eller så tittar du på fel fält.

Medlem sedan juni 200032 967 inlägg
#10

Ja.......

Om du frågar efter ett komplett datum är det inte så konstigt att du inte får träff när du inte anger rätt år i SQL-frågan...

Fråga gärna efter rätt saker från början.

strSQL="select * 
  from tblUsers 
where extract(month from persnr) = " & month(varDate) & " and extract(day from persnr) =  " & day(varDate)

edit: lösningen kan också hittas om man lite snabbt söker på "MySQL and födelsedagar" här på wF...

Medlem sedan feb. 20032 027 inlägg
#11

Ok, tack @nders, du är en räddande ängel :-D

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)