Avatar billede eyes Nybegynder
06. august 2007 - 11:44 Der er 5 kommentarer og
1 løsning

Vise poster der er over et halvt år gamle ud fra timestamp

Hej Eksperten

Jeg sidder og roder lidt med noget timestamp og udtræk af specifikke felter efter dato.

kan man vha. ASP indsætte et timestamp så det bliver opfattet korrekt i MySQL?

mit table har et felt til dato, som skal sammenlignes med den nuværende dato, og skal kun vise poster der er over et halvt år gammelt.
Avatar billede lord_mike Nybegynder
06. august 2007 - 14:51 #1
MySQL har timestamps sådan her:

DD-MM-YYYY HH:MM:SS

Derved kan du lave en lignende timestamp:

Private Function PD(Var, Digits)
'Paste Digits, således at alle felter kan have X antal cifre
'Prefix alle manglende felter med 0
Do Until Len(Var) >= Digits
  Var = "0" & Var
Loop

'Send svar
PD = Var
End Function

Private Function CreateDate()
CreateDate = PD(Day(Date), 2) & "-" & PD(Month(Date), 2) & "-" & PD(Year(Date), 4) & " " & PD(Hour(Time), 2) & ":" & PD(Minute(Time), 2) & ":" & PD(Second(Time), 2)
End Function

-Mike
Avatar billede eyes Nybegynder
06. august 2007 - 15:12 #2
hej mike

har siddet og rodet lidt med det

koden for den ene fil hvor jeg indsætter i databasen ser således ud

dim tid, maaned, aar
navn = request.Form("navn")
tid = DateAdd("m",0,date())
dag = Mid(tid,1,2)
maaned = Mid(tid,4,2)
aar = Mid(tid,7,4)
nytid = aar+"-"+maaned+"-"+dag

StrSQL = ""
StrSQL = "INSERT INTO tabeltest (Navn,tid) VALUES('"+navn+"','"+nytid+"')"
Set objRS = objConn.Execute(strSQL)

årsagen til at jeg har lavet det om er for at datetime feltet kan tage datoen korrekt.

nu mangler jeg så udtrækket

er kommet frem til følgende, men det virker ikke helt endnu.

<html>
<head>
<title>tid og dato</title>
</head>
<body>
<form name="form1" method="post" action="testdato1.asp">
  <input name="navn" type="text" id="navn">
  <input type="submit" name="Submit" value="Submit">
</form>

<%
            tid = DateAdd("m",-6,date())
            dag = Mid(tid,1,2)
            maaned = Mid(tid,4,2)
            aar = Mid(tid,7,4)
            'nytid = aar+"-"+maaned+"-"+dag
            nytid = aar+"-"+maaned+"-"+dag
           
            StrSQL = ""
            StrSQL = "SELECT * FROM tabeltest WHERE tid >="+nytid
            Set objRS = objConn.Execute(strSQL)
%>


<%Do While Not objRS.EOF%>
<%=objRS("navn")%><br><%=objRS("tid")%><br><br>
<%objRS.MoveNext
Loop%>


</body>
</html>

/simon
Avatar billede lord_mike Nybegynder
07. august 2007 - 13:10 #3
Jeg kan se du vil hente posts inden for en tidsramme..
Ville det ikke være nemmer at hente dem med MySQLs dato formaterings  værktøjer...?

Eks..

"SELECT * FROM abc WHERE TIMESTAMPDIFF(MONTH, postDate, CURRENT_TIMESTAMP) <= 6"

TimestampDiff skal bruge 3 parametre:
Interval
Start dato
Slut dato

Så vil den give dig antallet af <interval> der er imellem de to datoer...

Eks.
"SELECT TIMESTAMPDIFF(MONTH, '2003-02-01', '2003-05-01');"
Giver '3'

Så vi kan sige at du vile vise posts < 6 måneder:
Eks.

07-06-2007 skal vises
"SELECT TIMESTAMPDIFF(MONTH, '2007-06-07', CURRENT_TIMESTAMP);"
Avatar billede lord_mike Nybegynder
07. august 2007 - 13:11 #4
Hov.. trykkede "Send" før tid...

Anyways..

[...]
Giver:
2

Så du kan sige at hvis den er under eller lig med 6 så skal den vises

-Mike
Avatar billede eyes Nybegynder
07. august 2007 - 17:37 #5
Hmm jo det ser meget godt ud :)

vil man så kunne gøre sådan her?
"SELECT * FROM tabeltest WHERE TIMESTAMPDIFF(MONTH, tid, CURRENT_TIMESTAMP) <='6' AND EFTERSETKODE<>'1'"

Denne post ville så hive poster ud fra tabeltest som er over 6 måneder og som er forskellig fra 1 i kolonnen eftersetkode?

er dette korrekt forstået?

mhv simon
Avatar billede lord_mike Nybegynder
08. august 2007 - 04:37 #6
Du skal lige spørge dig selv om det er 'integers' (Tal) du arbejder med.
For så er det meget bedre at fjerne "''"... :)

Men ellers jo, sørg for at feltet "Eftersetkode" er en 'int' eller 'bigint'.

Forresten så henter den alle posts UNDER 6 måneder gammel... :P
Du tæller jo antallet af måneder fra tid til nu, dvs, er den under 6, så er den også under et halvt år gammel.. :P
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