webForumDet fria alternativet
Logga in / Bli medlem

Datum - Variabel

ASP

19 svar · 343 visningar · startad av mattiasnordin

Medlem sedan maj 20012 080 inlägg
Trådstart#1

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...

Medlem sedan juli 2001203 inlägg
#2

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")
Medlem sedan maj 20012 080 inlägg
#3

Jag får "Cannot use parentheses when calling a Sub" när jag provar datediff("d","2001-08-08","2001-08-10")

Medlem sedan dec. 19995 874 inlägg
#4

Dim a
a = datediff("d","2001-08-08","2001-08-10")

Medlem sedan maj 20012 080 inlägg
#5

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. :D

Medlem sedan dec. 19995 874 inlägg
#6

<%
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
%>

Medlem sedan maj 20012 080 inlägg
#7

Man tackar brimba. Nu har jag gjort min första killer application.

Ja, jag skulle äta där det är rökförbud ;-)

Medlem sedan dec. 19995 874 inlägg
#8

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!

Medlem sedan maj 20012 080 inlägg
#9

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?

Medlem sedan dec. 19995 874 inlägg
#10

Nu fungerar den.
Hade råkat skriva myDate = b istället för modDate = b

Medlem sedan maj 20012 080 inlägg
#11

Nu ser det snyggare ut. Dessutom kan man ju återanvända funktionen! =)

Medlem sedan maj 20012 080 inlägg
#12

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 = ????
Medlem sedan dec. 19995 874 inlägg
#13

"Delete FROM Kalender WHERE datum < #2001-08-09#"

Medlem sedan maj 20012 080 inlägg
#14

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?

Medlem sedan dec. 200012 464 inlägg
#15

# används i access (enbart) för att specificera ett datum i ett sqlstatement.

Medlem sedan dec. 19995 874 inlägg
#16

/me använder access :e

Sorry mattias, räknade med att du hade backup :x

Medlem sedan maj 20012 080 inlägg
#17

då kanske man kan skriva:

Query = "DELETE * from Kalender "
Query = Query & " WHERE datum < #" &date &"#"
Medlem sedan dec. 200012 464 inlägg
#18

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.

Medlem sedan maj 20012 080 inlägg
#19

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...

Medlem sedan maj 20012 080 inlägg
#20

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....

381 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
120 ms — deklarationer (db)
120 ms — hämta statistik (db)
133 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)