Avatar billede stigc Nybegynder
07. oktober 2002 - 12:46 Der er 9 kommentarer og
1 løsning

Sammeligne dato obejkter

Jeg skal arbejde vider på noget gammel kode, og vil høre om der er et problem med disse sammenligninger...

if date1>date2 THEN

eller

if date1>date2 THEN

eller

if date1=date2 THEN

Skal man ikke bruge datediff? Eller virker de andre sammeligninger også?

Gerne en refference på en artikel/side eller andet.
Avatar billede medions Nybegynder
07. oktober 2002 - 12:48 #1
Du skal bruge DateDiff()

If DateDiff("dd",date1,date2) > 0 Then

End If

osv.!

//>Rune
Avatar billede medions Nybegynder
07. oktober 2002 - 12:50 #2
Hov undskyld.. sådan her:

If DateDiff("d",date1,date2) > 0 Then

End If

osv.!
Avatar billede stigc Nybegynder
07. oktober 2002 - 12:54 #3
Det ville jeg også selv have valgt, men virke det andet?
Avatar billede coltau Juniormester
07. oktober 2002 - 13:39 #4
Dine eksempler virker.
MEN KUN hvis du er sikker på at date1 og date2 er af typerne DATE.

Man kan være uheldig når det er ASP der "gætter" typen. Eks.

Date1 = "01-02-2003"
if Date1 < Now then

Denne linie kan godt fejle da ASP laver Now om til typen String eller Tekst og får følgende sammenligning: "01-02-2003" < "07-10-2002"

Hvis man vender det om
if Now >= Date1 then
så vil ASP sammenligne dem som Date-typer og det går jo fint.

For at sikre sig kan man gøre således:

date1 = CDate(date1)
date2 = CDate(date2)

if date1>date2 THEN ' Den vil altid gå godt.
Avatar billede stigc Nybegynder
07. oktober 2002 - 13:45 #5
Det er helt sikkert date objekter. Hentet fra to databaser.
Avatar billede stigc Nybegynder
07. oktober 2002 - 13:54 #6
Jeg tror så problemet er opstået sådanne her:

Det er brugt "getDate()" i en SQL server, som dermed har lavet et tidsstempel med millisekunder.

Det er så kopieret til en Access database som smider millisekunderne væk. (Jeg ved det ikke, men det er min tese!) Herefter vil en sammeligning, fortæller at de er forskellige...

Spørgsmålet er om DateDiff("s",date1,date2)>0 vil af hjælpe det?
Avatar billede stigc Nybegynder
07. oktober 2002 - 14:02 #7
Forresten kan jeg ikke bruge datediff, da jeg ikke kendre SQL serverens datoformat. Men hvad gør jeg i stedet for nedenstående, når den ikke må fejle på sekundet?

        strSQL = "SELECT * FROM cbb_supplier WHERE year(createddate)='" & Year(rsCA!createdDate) & "' "
        strSQL = strSQL & "AND month(createddate)='" & Month(rsCA!createdDate) & "' "
        strSQL = strSQL & "AND day(createddate)='" & Day(rsCA!createdDate) & "' "
        strSQL = strSQL & "AND datepart(hour,createddate)='" & Hour(rsCA!createdDate) & "' "
        strSQL = strSQL & "AND datepart(minute,createddate)='" & Minute(rsCA!createdDate) & "' "
        strSQL = strSQL & "AND datepart(second,createddate)='" & Second(rsCA!createdDate) & "' "
        strSQL = strSQL & "AND createdby='" & rsCA!createdby & "'"
Avatar billede eagleeye Praktikant
07. oktober 2002 - 14:17 #8
du kan godt lave sammenlignerne som du skriver i spørgsmålet du skal bare havde sat CDate omkring hver variable for at fortæller asp-fortolkeren den skal se variablen som en dato:


if CDate(date1) > CDate(date2) THEN

eller

if CDate(date1) > CDate(date2) THEN

eller

if CDate(date1) = CDate(date2) THEN
Avatar billede stigc Nybegynder
07. oktober 2002 - 14:23 #9
eagleeye>> Det er dato'er. SÅ det kan den vel selv finde ud af. Jeg har skevet det er ASP, men det er faktisk VB. Det gør vel ingen forskel :)
Avatar billede eagleeye Praktikant
07. oktober 2002 - 18:52 #10
hvis du ikke har DIM'et dine variable så vil alle variable bliver forsøgt læst som strenge.. Hvis du bare skriver:
date1 = "10-12-2002"  så er det en streng....

Er det ikke en ASP side du har koden i, eller er det et VB program???
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