Gör först om datumen till ett bättre format... yyyy-mm-dd är bra.. sen kör du denna kod...
datediff("d","2001-08-08","2001-08-10")
19 svar · 343 visningar · startad av mattiasnordin
Jag har en variabel som är ett datum i formatet: 010808
Nu vill jag visa hur många dagar det är kvar till detta datum. Har dock inte hållt på mycket med datumdelen i VB-script ännu...
Om variabelns datum är 010810 och dagens datum är 010808 vill jag visa resultatet 2.
Säkert enkelt för er som kan. Själv går det trögt med trial n error varianten...
Gör först om datumen till ett bättre format... yyyy-mm-dd är bra.. sen kör du denna kod...
datediff("d","2001-08-08","2001-08-10")
Jag får "Cannot use parentheses when calling a Sub" när jag provar datediff("d","2001-08-08","2001-08-10")
Dim a
a = datediff("d","2001-08-08","2001-08-10")
Som ni märker är jag nybörjare. Tackar brimba. Det går nu betydligt bättre.
Har ni inte någon fiffig lösning på hur man konverterar datumet 010808 till 2001-08-08?
Jag har en mycket begränsad inputyta så jag vill helst ha kvar den korta formateringen i databasen.
<%
a = "010731"
a1 = mid(a, 1, 2)
a2 = mid(a, 3, 2)
a3 = mid(a, 5, 2)
b = "20" & a1 & "-" & a2 & "-" & a3
response.write b
%>
Man tackar brimba. Nu har jag gjort min första killer application.
Ja, jag skulle äta där det är rökförbud ;-)
Perfekt mattias!
Om du vill göra det ännu mer komplicerat kan du göra en funktion av det.
<%
Function modDate(myDate)
a = myDate
a1 = mid(a, 1, 2)
a2 = mid(a, 3, 2)
a3 = mid(a, 5, 2)
b = "20" & a1 & "-" & a2 & "-" & a3
modDate = b
End Function
%>
Sedan för att använda den gör du följande:
<%
response.write modDate("010809")
%>
Lycka till!
Jag får tyvärr inte din funktion att fungera men jag fattar konceptet. Koden blir dessutom snyggare då jag har en ganska krånglig if / else struktur...
Undrar vad det som blir fel?
Nu fungerar den.
Hade råkat skriva myDate = b istället för modDate = b
Nu ser det snyggare ut. Dessutom kan man ju återanvända funktionen! =)
Nu blev det lite krångligare... Allt fungerar bra men jag kom på att jag nu kan få negativa datum om jag inte tar bort de som är äldre än dagens datum ur databasen.
Kan man skriva någon ball SQL fråga som tar bort allt ur databasen som är äldre än dagens datum?
Query = "Delete * from Kalender "
Query = Query & " where datum = ????
"Delete FROM Kalender WHERE datum < #2001-08-09#"
Ha ha ha - LOL - ja ..... något hände....
Nu har jag inte någon data i huvudtaget i databasen. Det gör inget dock. Bara resa sig och vara berädd på nästa smäll.
Vad har # för funktion?
# används i access (enbart) för att specificera ett datum i ett sqlstatement.
då kanske man kan skriva:
Query = "DELETE * from Kalender "
Query = Query & " WHERE datum < #" &date &"#"
Jo, man kan också utnyttja den datumfunktion som finns i Access.
Query = "DELETE * from Kalender "
Query = Query & " WHERE datum < date "
Delete * är också access-specifikt och det behövs bara om man använder Access 97 eller tidigare versioner.
Hallo, jag kanske inte är så bra på det här. Det går att lägga till saker i kalendern med datum i framtiden men så fort jag lägger till ett gammalt datum så deletas allt ur databasen. Vad är det för fel på min delete fråga?
if datediffresult < 0 then
response.write "TEST"
Query = "DELETE * FROM Kalender "
Query = Query & " WHERE datum < #" &date &"#"
' response.write (Query)
set conntemp=server.createobject("adodb.connection")
conntemp.open Dsn
set rstemp=conntemp.execute(Query)
conntemp.close
set conntemp=nothing
end if
Jag vill alltså att bara det gamla raden med det gamla datumet ska raderas. Inte ALLT :-( ha ha...
Kanske har med att göra att datumen i "datum" tabellen i databasen är i formatet 010808 istället för 2001-08-08. Kanske lättare att byta så att jag har samma format överallt....