Du skriver inte vilket DBMS som används. MSSQL:
SELECT *
FROM Blogg
WHERE year(Datum) = year(getdate())
and month(Datum) = month(getdate())
and day(Datum) = day(getdate())
11 svar · 520 visningar · startad av Yoda
Håller på att göra en blogg. I inläggen har jag ett fält som är av typen datetime. Hur hämtar jag inläggen från ett visst datum där tiden inte spelar någon roll?
SELECT *
FROM Blogg
WHERE Datum = 2007-06-01
Fast det fungerar ju inte eftersom det inte finns några datum som ser ut så där i typen datetime.
Du skriver inte vilket DBMS som används. MSSQL:
SELECT *
FROM Blogg
WHERE year(Datum) = year(getdate())
and month(Datum) = month(getdate())
and day(Datum) = day(getdate())
Hm, vad betyder DBMS?
Jag använder MySQL 4.1 och datumet skrivs ÅÅÅÅ-MM-DD TT-MM-SS. Kanske det hjälper.
DBMS = Database Management System = Databashanteringssystem.
Byt ut getdate() mot curdate() för MySQL.
Okej, det har jag ju hört när jag tänker efter.
Fast det saknas något i satsen. Jag får inte ut några resultat. Var skriver jag in det datumet jag vill ha alt. skickar med variabel med datumet?
Av titeln på tråden att döma trodde jag du ville matcha mot poster från i dag. Till höger om likhetstecknen anger du de olika datumdelarna. Om du har en sträng d = "2007-06-01" kan du t.ex. skriva (VBScript):
d = cdate(d)
SELECT *
FROM Blogg
WHERE year(Datum) = year(d)
and month(Datum) = month(d)
and day(Datum) = day(d)
GunnarD: Den returnerar ett tomt resultat. Förmodligen eftersom datumen som finns i tabellen är ex. 2007-06-01 21:01:43 och då finns ju inte bara 2007-06-01. Väl?
Jag använder mig av php.
function select_inlagg()
{
$select_inlagg = "SELECT *
FROM Blogg
WHERE year( Datum ) = year( curdate(2007) )
AND month( Datum ) = month( curdate(06) )
AND day( Datum ) = day( curdate(01) ) ";
$result = mysql_query($select_inlagg);
return $result;
}
function inlagg($result)
{
while($data = mysql_fetch_array($result))
{
echo "<p>" . $data["Kommentar"] . "</p><p>/" . $data["Namn"] . "<br />" . $data["Datum"] . "</p><hr />";
}
}
och
$result = select_inlagg();
inlagg($result);
Fungerade inget vidare...
I dagens blogg vill jag hämta upp dagens inlägg/kommentarer.
curdate() vill inte ha parametrar. Vill du ha dagens poster använder du koden från inlägg #2, men byter ut getdate() mot curdate().
AHA, nu förstår jag. Det fungerar ju jättebra. Jag hade ingen kommentar från idag i tabellen bara. Tack!
Fast kommentarerna från idag vill jag ska visas i morgon också. Kommentarerna från igår ska visas tillsammans med mitt blogginlägg från igår. Hur skriver jag då då?
testa att lägga till
SELECT * FROM Blog WHERE createad_at > FROM_DAYS(2)
där created_at är ett DATETIME fält som sparas med CURRENT_TIMESTAMP() / Now()
Tack!
Det var så här jag menade, förklarade förmodligen som en kratta.. :-)
SELECT *
FROM Blogg
WHERE Datum LIKE '2007-06-01%'
Då får jag ju alla kommentarer från det datumet oavsett tidpunkt.
Och istället för att skriva datumet i select-satsen kan jag skicka med en variabel i funktionen. Men det hör inte till detta forumet.
Tack för all hjälp!!