webForumDet fria alternativet

select * where date = idag fast fältet är datetime

11 svar · 518 visningar · startad av Yoda

YodaMedlem sedan nov. 2002291 inlägg
#1

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.

Peter SMedlem sedan dec. 20025 483 inlägg
#2

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())
YodaMedlem sedan nov. 2002291 inlägg
#3

Hm, vad betyder DBMS?
Jag använder MySQL 4.1 och datumet skrivs ÅÅÅÅ-MM-DD TT-MM-SS. Kanske det hjälper.

Peter SMedlem sedan dec. 20025 483 inlägg
#4

DBMS = Database Management System = Databashanteringssystem.

Byt ut getdate() mot curdate() för MySQL.

YodaMedlem sedan nov. 2002291 inlägg
#5

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?

GunnarDMedlem sedan juni 20014 290 inlägg
#6

Prova med

SELECT *
FROM Blogg
WHERE Datum = '2007-06-01'
Peter SMedlem sedan dec. 20025 483 inlägg
#7

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)
YodaMedlem sedan nov. 2002291 inlägg
#8

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.

Peter SMedlem sedan dec. 20025 483 inlägg
#9

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().

YodaMedlem sedan nov. 2002291 inlägg
#10

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å?

xox-seMedlem sedan maj 200732 inlägg
#11

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()

YodaMedlem sedan nov. 2002291 inlägg
#12

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!!

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