Avatar billede thomas_regin Nybegynder
21. juli 2002 - 22:36 Der er 10 kommentarer

Belastende SQL-sætning og loop.

Hejsa!

Jeg har et problem med dato-sortering i SQL-server og dertilhørende loop.

Jeg henter hver dag nyheder i XML-format, som jeg gemmer i SQL-server. Jeg gemmer desuden dato/klokkeslet for publicering, som jeg herefter bruger til at sortere på. Jeg vil derfor gerne have, at mit loop er istand til først at skrive datoen for udgivelse og herunder liste de artikler der er blevet udgivet den påpgældende dag.

Problemet er så bare, at artiklerne bliver gemt med det eksakte klokkeslet. Dvs. xx/xx/xxxx xx:xx:xx. Dette betyder, at jeg ikke kan bruge SELECT DISTINCT, da alle records er forskellige på grund af sekunderne.

Jeg har prøvet med SELECT day(DATE_PUBLISHED), men den kan jeg ikke få til at virke ordenligt.

Er der nogle der kan give mig et svar på dette spørgsmål?

På forhånd tak, og 100 points til et rigtigt svar! :)

Thomas Regin.
Avatar billede medions Nybegynder
21. juli 2002 - 22:41 #1
Hmm.. jeg ved ikke rigtig om du mener dette men jeg prøver ;-)

Du kan fjerne sekunderne med funktionen Left()
Left(xx:xx:xx,5)

//>Rune
Avatar billede medions Nybegynder
21. juli 2002 - 22:44 #2
SELECT * FROM tabel WHERE time = Left("xx:xx:xx",5)
Tror jeg nok virker i MS SQL Server, men hvis ikke kan du bare skrive:
SELECT * FROM tabel WHERE time ='" Left("xx:xx:xx",5) & "'"

//>Rune
Avatar billede neteffect Nybegynder
21. juli 2002 - 22:48 #3
Gemmer du datoen i databasen som dato eller som string?
Har du nogne idé om, hvorfor "den rigtige metode" med DAY ikke virker?
Avatar billede neteffect Nybegynder
21. juli 2002 - 22:52 #4
Hov, er det forresten ikke datepart den hedder? Day tager bare dag i måneden.
Avatar billede coltau Juniormester
21. juli 2002 - 22:52 #5
Større en og mindre end virker da altid:

strMin = "MM-DD-YYYY" ' Dato for dagen før
strMax = "MM-DD-YYYY" ' Dato for dagen efter

SELECT * FROM tabel WHERE time >'" & strMin & "' and time<" & strMax & "'"

Så får du dem alle uanset tiden.
Avatar billede thomas_regin Nybegynder
21. juli 2002 - 23:24 #6
Hejsa igen!

Problemet opstår sådan set først, når jeg skal lave loopet!

Jeg vil jo gerne have det til at se således ud

EKSEMPEL:

Fredag den 19. Juli 2002
Artikel1
Kort resume
Læs mere

Artikel2
Kort resume
Læs mere

Lørdag den 20. Juli
Artikel1
Kort resume
Læs mere

Artikel2
Kort resume
Læs mere

Ved at lave en SELECT * FROM BLABLA WHERE DATE_PUBLISHED BETWEEN " & now() - 3 & " AND " & now() & " kunne jeg tage de nyeste artikler fra de sidste 3 dage, men problemet er, når jeg looper, så får jeg publicerings-datoen med for hver gang jeg looper igennem! Det er det jeg prøver på at undgå. Jeg vil gerne kunne nøjes med at liste publicerings-datoen én gang, og vise alle de artikler der blev publiceret den dag!

Og ja, jeg gemmer datoen i et datetime felt, så jeg kan bruge det til noget fornuftigt.

Håber at det giver mening!

Thomas.
Avatar billede neteffect Nybegynder
21. juli 2002 - 23:46 #7
Jamen, loopet skal da også have lidt at lave!

pubdag=""
pubaar=""
if not rs.eof then
do
  if pubdag<>datepart("y",rs("DATE_PUBLISHED")) or pubaar<> datepart("yyyy",rs("DATE_PUBLISHED")) then
    response.write rs("DATE_PUBLISHED") & "<br>"
    pubdag=datepart("y",rs("DATE_PUBLISHED"))
    pubaar=datepart("yyyy",rs("DATE_PUBLISHED")
  end if
  response.write rs("artikel_bla_bla") & "<br>"
  rs.movenext
loop until rs.eof
rs.close
end if
set rs=nothing
Avatar billede neteffect Nybegynder
21. juli 2002 - 23:47 #8
pubaar=datepart("yyyy",rs("DATE_PUBLISHED"))
der manglede en parentes til sidst
Avatar billede thomas_regin Nybegynder
21. juli 2002 - 23:55 #9
BINGO!!!!

NetEffect, Det var præcis hvad jeg skulle bruge! Mange tak for hjælpen!!

Hvis du lige "svarer", så tildeler jeg pointene til dig!

Herlige hilsner,

Thomas.
Avatar billede thomas_regin Nybegynder
15. januar 2003 - 10:16 #10
NetEffect?.. Hvis du lige gider at svare en gang, såååååeh.. ;)

/thomas.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester