SELECT * FROM [news] WHERE [x_dateFrom] <= " & date() & " AND [x_dateTo] >= " & date() & ";"
Du kan ha klockslag i ett fält av typenb datum i Access.
5 svar · 291 visningar · startad av brw
Hej
Jag har en nyhetsfunktion där jag publicerar nyheter och har du ändrat så att man kan lägga in nyheter i förväg och att det skall publiceras efter förutbestämt datum men jag har lite problem med att få till SQL-frågan.
Jag har databasen med följande kolumner:
titel
text
fromyear (ex: 2001)
frommonth (ex: 07)
fromday (ex: 02)
fromhour (ex: 11)
toyear (ex: 2001)
tomonth (ex: 08)
today (ex: 02)
och lite andra som är ointressant.
Jag har alltså så att jag kan ställa när nyheten skall publiceras och när den skall arkiveras ("standard" = en månad efter publiceringsdatumet enligt exemplet ovan.)
Problemet är hur jag ska ställa frågan till databasen för att visa detta.
På startsidan vill jag att den ska plocka fram de 10 senaste nyheterna med titel och datum och så får man klicka på en "Läs mer.."-knapp för att få se hela nyheten.
Vill nu ha hjälp med hur jag ska ställa SQL-frågan.
måste antagligen vilket jag tror sätta ihop fromyear och frommonth och fromday till en datumvariabel och lika med toyear osv..
och sedan ställa frågan något såhär:
SQL = "Select TOP 10 * FROM nyheter WHERE datumet nu och timmen just nu är mellan publiceringsdatum och arkiveringsdatum ORDER BY publiceringsdatum DESC"
Mycket tacksam för svar!
SELECT * FROM [news] WHERE [x_dateFrom] <= " & date() & " AND [x_dateTo] >= " & date() & ";"
Du kan ha klockslag i ett fält av typenb datum i Access.
Som du skriver den där SQLsatsen så blir det väl enligt nedan:
om jag bygger ihop värdena enl nedan
datumfrom = fromyear & "-" & frommonth & "-" & fromday & " " & fromhour & ":00:00"
datumfrom = cdate(datumfrom)
datumfrom = "#" & datumfrom & "#"
då skulle datumet kunna se ut såhär:
# 2001-07-02 11:00:00 #
datumto = toyear & "-" & tomonth & "-" & today
datumto = "#" & Cdate(datumto) & "#"
och sqlfrågan såhär:
SELECT * FROM nyheter WHERE datumfrom <= " & now() & " AND datumto >= " & date() & ";"
skulle detta kunna fungera?
jag kan inte testa just nu
Att jag har värdena separat alltså datum - år, månad och dag är för att det ska bli smidigare att redigera.
Det är mycket enklare att hantera datum om du inte hanterar det som separata fält. Om du behöver plocka ut månad eller år från ett datumfält så finns det funktioner som year, month och day för det.
Annars måste du bygga något i stil med detta (om du använder SQL server)
select top 10 * from news
where getdate() between cast(fromyear + '-' + frommonth + '-' + fromday as date)
and cast(toyear + '-' + tomonth + '-' + today as date)
order by fromyear,frommonth,frodmday desc
Om du har datumfält så kan du göra som Eclipse skriver och lägga till en order by
Jag har SQL-server... men är mitt rätt tänkt för övrigt.. skulle det kunna fungera?
Anlednigen till att jag inte haft det i en och samma från början har väl varit att jag inte kunnat utan nu på senare lärt mig det som du beskriver då till exempel:
datum = now
och sen bara
timmenu = hour(datum)
om det var så du menade?
Kan ju iofs skriva om hela skiten och spara datum i en och samma kolumn men då får jag massa extra jobb nu.. kan förbättra det framöver när det är mindre att göra så slipper jag det nu och det fungerar att göra så som jag beskrev.
/brw
Jo det ser väl ok ut, men om du har SQL server så skall det inte vara några #