Hej! Jag tror du kan använda dig av FormatDateTime för att få rätt format på dTodaysDate Ja det gick bra att köra med förslaget - men jag får ändå med poster som jag inte vill ha med. Alltså poster med äldre datum än dagens datum. Du frågar ju faktiskt efter dessa poster i din SQL fråga. Hm... nej eftersom jag skrev dagens datum < tabell_datum så borde jag få ut de poster som är "efter" dagens datum... men nog om det... Datorn kommer göra det du säger till den. Inte det du vill att den ska göra.<br> Jag har löst det med info från en "konkurrerande" sajt... www.webforum.nu DEt är ju det jag föreslagit och förklarat favrför man ska göra.Datum i where-villkor...
Jag vill kunna plocka ut endast de posterna som skapats efter ett visst datum ur min tabell "Calendar".
Kolumnen heter xdate och i exemplet nedan använder jag för enkelhetens skull dagens datum som jag bygger upp i rätt format (samma som i databasen, Access).
Men detta funkar inte...
<code>
dTodaysDate = cStr(Year(Date) & "-" & Month(Date) & "-" & Day(Date))
set lADODBRecordSet = lADODBConn.Execute("SELECT c.id FROM Calendar c where " & cDate(dTodaysDate) & " < xdate order by xdate");
</code>
Hjälp!!!!!!
:o)Sv: Datum i where-villkor...
dTodaysDate = FormatDateTime(now(),2)Sv: Datum i where-villkor...
Ska det inte funka med < ?
Du kanske vet detta oxå - eller någon annan räddare i nöden... :o)Sv: Datum i where-villkor...
När det gäller datum är ju mindre än (<) samma sak som äldre än... eller hur.
Men att hämta poster som är "yngre" än dagens datum låter lite konstigt... men jag förmodar att det inte är det datumet du ska använda sen?Sv: Datum i where-villkor...
Jag vände på uttrycket så är det lättare att läsa:
<code>
dTodaysDate = cStr(Year(Date) & "-" & Month(Date) & "-" & Day(Date))
set lADODBRecordSet = lADODBConn.Execute("SELECT c.id FROM Calendar c where xdate > " & FormatDateTime(now(),2) & " order by xdate");
</code>
Sedan la jag in en post med datumet 2002-10-10.
Den kommer tyvärr med...
Vänder jag på uttrycket och ska plocka ut de posterna som är äldre än dagens datum så får jag ett fel - trots att jag har poster som både är äldre och yngre än dagens datum... skumt!!!
Kanske man inte ska använda < och > ?
Man vill ju gärna begränsa urvalet redan vid frågan mot databasen av prestanda-skäl - annars skulle man kunna selektera ut rätt poster i loopen efter - men det vill jag inte....
Någon?Sv: Datum i where-villkor...
<br>
Hur tror du att datorn kommer att tolka:<br>
2002 - 11 - 7<br>
<br>
Svar är att den ser det som en matematisk beräkning och retunerar talet 1984. <br>
<br>
Tar man sedan i hänsyn att microsoft lagrar datum som dygn sedan 1899-12-30. Blir det att talet 1984 ger datumet 1905-06-06.<br>
<br>
I sql bör istället formatera datum efter amerikanskt format mm/dd/yyyy<br>
<br>
Om du använder Access, testa då med:
<code>
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "#" & Month(Value) & "/" & Day(Value) & "/" & Year(Value) & "#"
Else
SQLDate = "Null"
End If
End Function
Set lADODBRecordSet = lADODBConn.Execute("SELECT c.id FROM Calendar c where xdate > " & SQLDate(now()) & " order by xdate");
</code>
Använder du MS SQL sServer eller MySQL, testa då med:
<code>
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "'" & Month(Value) & "/" & Day(Value) & "/" & Year(Value) & "'"
Else
SQLDate = "Null"
End If
End Function
Set lADODBRecordSet = lADODBConn.Execute("SELECT c.id FROM Calendar c where xdate > " & SQLDate(now()) & " order by xdate");
</code>Sv: Datum i where-villkor...
Det är rätt bra den oxå.
Så här skriver man t ex:
<code>
dTodaysDate = cStr("#" & Year(Date) & "-" & Month(Date) & "-" & Day(Date) & "#")
"blablabla...where tabell_kolumn > "#" & dTodaysDate & " from tabell"
</code>
Man använder alltså # före och efter datumsträngen!
Funkar jättebra!
Tack för all hjälp!Sv: Datum i where-villkor...
Eller har du inte läst det inlägget ovan?