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.
Annonceindlæg fra Partnertekst
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
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
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);"
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
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
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
Kurser inden for grundlæggende programmering