jämföra timestamp

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • lejzer
    Medlem
    • 2002-06-07
    • 263

    #1

    jämföra timestamp

    Hej!

    Någon som kan hjälpa mig med hur man jämför timestamp? Jag har en tabell i en MySQL och ett fält är timestamp.

    Vid en inloggning vill jag radera alla poster som är äldre en viss tid. ex 20 min.

    Hur skriver jag detta?

    Tack på förhand!
  • dectgap
    Absent friend
    • 2002-09-08
    • 1542

    #2
    PHP Code:
    $query = "SELECT UNIX_TIMESTAMP(timestampfält) AS created_time";
    // Kör sql-satsen
    
    if (strtotime("-20 minutes") > $created_time){
    // plocka bort posten
    } 
    
    Ersätt $created_time med vad fältet i databasen får för namn.

    Comment

    • Webslave
      Medlem
      • 2002-05-18
      • 662

      #3
      PHP Code:
      $currenttime = date("YmdHis"); /* Nuvarande tidpunkt */
      $deletefrom = $currenttime-2000; /* Tar bort de poster som är äldre än 20 minuter */
      
      $sql = "DELETE FROM tabell WHERE din_timestamp_rad > '$deletefrom'"; 
      
      Tror jag...
      webslave.se

      Comment

      • lejzer
        Medlem
        • 2002-06-07
        • 263

        #4
        Tack till er båda för era svar, men jag får inte rätt på det ändå.. Det blir inte riktigt rätt format.

        Hos mig ser timestampet ut som följer från mysqln:

        021027230854

        men formatet som era svar gav mig ser ut så här (Alltså, Nu - 20min):

        1035755334

        Nån aning?

        Tack

        Comment

        • dectgap
          Absent friend
          • 2002-09-08
          • 1542

          #5
          Anledningen till att du inte får det att fungera är att du inte kan jämföra ett timestamp ifrån PHP direkt med ett ifrån MySQL.

          Timestamp i PHP skrivs som antalet sekunder sedan 1 januari 1970 (s.k. UNIX timestamp), medan timestamp i MySQL skrivs på formen YYYYMMDDHHMMSS (kan förkortas genom att ändra kolumnparametern). För att kunna jämföra dem måste du göra om dem till samma format, och det görs enklast genom MySQL-funktionen UNIX_TIMESTAMP() som du kör på kolumnen.

          För att bygga vidare på Webslave's exempel (som är bättre om du bara vill plocka bort de gamla posterna rakt av):

          PHP Code:
          $deletetime = strtotime("-20 minutes");
          
          $sql = "DELETE FROM tabell WHERE UNIX_TIMESTAMP(din_timestamp_rad) < '".$deletetime".'"; 
          
          EDIT:
          Om du försökte dig på Webslave's exempel berodde felet inte på UNIX timestamp, utan andra grejer
          1. Du har med årtusende och århundrade i MySQL
          2. Det går inte att plocka bort 2000 ifrån strängen för att komma 20 minuter bakåt i tiden
          3. Jämförelsen blev på fel håll.

          Comment

          • lejzer
            Medlem
            • 2002-06-07
            • 263

            #6
            Perfekt, nu löste det sig!

            Tack för hjälpen!

            / Martin

            Comment

            Working...