Hur löser jag det enklast om jag vill visa dagens födelsedagar, samt kommande födelsedagar, (de närmaste 3 dagarna)?
Datumet är sparat som DATE (XXXX-MM-DD).
Tacksam för all hjälp.
13 svar · 903 visningar · startad av Guldstrand
Hur löser jag det enklast om jag vill visa dagens födelsedagar, samt kommande födelsedagar, (de närmaste 3 dagarna)?
Datumet är sparat som DATE (XXXX-MM-DD).
Tacksam för all hjälp.
WHERE födelsedag BETWEEN Date(Now()) AND DateAdd('d', 3, Date(Now())
Skulle jag tro. Om det är T-SQL. Är det MySQL är det Current_Timestamp() istället för Now()
Om det är T-SQL. Är det MySQL är det Current_Timestamp() istället för Now()
Det är MySQL.
Då blir det alltså:
WHERE födelsedag BETWEEN Date(Current_Timestamp()) AND DateAdd('d', 3, Date(Current_Timestamp())
Har jag förstått rätt?
Det är MySQL.
Då blir det alltså:
WHERE födelsedag BETWEEN Date(Current_Timestamp()) AND DateAdd('d', 3, Date(Current_Timestamp())Har jag förstått rätt?
Har du testat?
Har du testat?
Ja, fick följande:
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 '' at line 1
Testade med detta:
$res = mysql_query("SELECT namn, fodd FROM personer WHERE fodd BETWEEN Date(Current_Timestamp()) AND DateAdd('d', 3, Date(Current_Timestamp())")
DateAdd finns inte i MySQL, däremot finns DATE_ADD.
Testa med
... BETWEEN DATE(NOW()) AND DATE_ADD(DATE(NOW()), INTERVAL 3 DAY)
(NOW() finns i MySQL)
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add
Testa det här istället:
$res = mysql_query("SELECT namn, fodd FROM personer WHERE fodd BETWEEN Date(CURRENT_TIMESTAMP()) AND DateAdd('d', 3, Date(CURRENT_TIMESTAMP())")[B];[/B]
Precis, det också! Dessutom saknade du ";" i slutet på raden, men det ger ju ett PHP fel och har inget med MySQL att göra.
DateAdd finns inte i MySQL, däremot finns DATE_ADD.
Testa med
... BETWEEN DATE(NOW()) AND DATE_ADD(DATE(NOW()), INTERVAL 3 DAY)(NOW() finns i MySQL)
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add
Hmm! Inget hämtas från databasen.
Har detta:
$res = mysql_query("SELECT namn, fodd FROM personer WHERE fodd BETWEEN DATE(NOW()) AND DATE_ADD(DATE(NOW()), INTERVAL 3 DAY)") or die(mysql_error());
while ($arr = mysql_fetch_assoc($res))
{
print("$arr[namn]<br />");
}
Ah, just ja, så var det...
För att utesluta vissa saker, kör frågan _direkt_ i phpMyAdmin:
SELECT namn, fodd FROM personer WHERE fodd BETWEEN DATE(NOW()) AND DATE_ADD(DATE(NOW()), INTERVAL 3 DAY)
Hmm! Inget hämtas från databasen.
Har detta:
$res = mysql_query("SELECT namn, fodd FROM personer WHERE fodd BETWEEN DATE(NOW()) AND DATE_ADD(DATE(NOW()), INTERVAL 3 DAY)") or die(mysql_error()); while ($arr = mysql_fetch_assoc($res)) { print("$arr[namn]<br />"); }
Du måste nog ta bort årtalet från datumen som ska jämföras, annars blir det lite fel.
... WHERE DATE_FORMAT(fodd, '%m-%d') BETWEEN DATE_FORMAT(NOW(), '%m-%d') AND DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 3 DAY), '%m-%d')
För att utesluta vissa saker, kör frågan _direkt_ i phpMyAdmin:
SELECT namn, fodd FROM personer WHERE fodd BETWEEN DATE(NOW()) AND DATE_ADD(DATE(NOW()), INTERVAL 3 DAY)
Hahaha! Jo jag förstod att det inte fanns några resultat från mysql.
Testade dock att ändra intervallet, men det hjälpte inte heller.
Finns ca 5 personer som jag VET fyller år i mitten på oktober t.e.x.
Vad exakt gör koden?
SELECT namn, fodd FROM personer WHERE fodd BETWEEN DATE(NOW()) AND DATE_ADD(DATE(NOW()), INTERVAL 3 DAY)
Du måste nog ta bort årtalet från datumen som ska jämföras, annars blir det lite fel.
... WHERE DATE_FORMAT(fodd, '%m-%d') BETWEEN DATE_FORMAT(NOW(), '%m-%d') AND DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 3 DAY), '%m-%d')
Aha! Nu fungerade det genast bättre. ;)
Tack!