webForumDet fria alternativet

Hämta nyheter efter datumbegränsning...

ASP

5 svar · 280 visningar · startad av brw

Medlem sedan juli 2000619 inlägg
Frågan#1

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!

------------------
Ingenting är omöjligt, bara en utmaning.

Medlem sedan juli 20003 825 inlägg
#2
SELECT * FROM [news] WHERE [x_dateFrom] <= " & date() & " AND [x_dateTo] >= " & date() & ";"

Du kan ha klockslag i ett fält av typenb datum i Access.

------------------
I sometimes wish I was famous.

Medlem sedan juli 2000619 inlägg
#3

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.

------------------
Ingenting är omöjligt, bara en utmaning.

[Redigerat av brw den 02 jul 2001]

Medlem sedan dec. 200012 464 inlägg
#4

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

------------------
essentitia preter non sans multiplicandum

Medlem sedan juli 2000619 inlägg
#5

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

------------------
Ingenting är omöjligt, bara en utmaning.

[Redigerat av brw den 02 jul 2001]

Medlem sedan dec. 200012 464 inlägg
#6

Jo det ser väl ok ut, men om du har SQL server så skall det inte vara några #

------------------
essentitia preter non sans multiplicandum

263 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)