Ankündigung

Einklappen
Keine Ankündigung bisher.

[Oracle] Datum in Unix-Time umwandeln

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Oracle] Datum in Unix-Time umwandeln

    Hallo,

    ich bräuchte mal deine Hilfe.
    Ich habe einen Oracle-SQL-Statement (auf Basis von PHP) geschrieben:


    PHP-Code:
    include "oci_conn.php";

    if (!
    function_exists('privacy')) {

        function 
    privacy($conn)
        {
            
    // FORMAT in DB = MDA_MESSAGE_TIMESTAMP = 2019-09-17 10:12:39.000000;

             
    $privacyUnix date(time() - (86400 365)); // one year

            
    $compiled oci_parse($conn"UPDATE STM_MESSAGE_DATA SET MDA_EMPLOYEE = null WHERE MDA_MESSAGE_TIMESTAMP < '" $privacyUnix "'");
            
    oci_execute($compiled);

        }
    }
    echo 
    privacy($conn); 
    Ziel ist es mit diesem SQL-Statement, dass alle Einträge die > ein Jahr die Mitarbeiter auf null gesetzt werden.
    Wie kann ich "MDA_MESSAGE_TIMESTAMP" innerhalb der SQL-Abfrage in eine Unix-Time umwandeln?


    Leider funktioniert das nicht. kannst Du mir vielleicht weiterhelfen?

  • #2
    Am besten gar nicht? Unix Timestamps sind ein schlechter kompromiss. Schau dir in der Anleitung von Oracle an wie Datumsspalten verglichen werden. Das sollte irgendwie so aussehen:

    PHP-Code:
    MDA_MESSAGE_TIMESTAMP TIMESTAMP '2020-01-01 20:20:20' 
    Du musst dann dein unix timestamp in das entsprechende Format umwandeln. Bzw. nimm besser gleich DateTime.

    Kommentar


    • #3
      PHP-Code:
                 $privacyUnix date(time() - (86400 365)); // one year 
      Anmerkung am Rande, damit es gesagt wurde.. Nicht jedes Jahr hat 365 Tage und nicht jeder Tag 24 Stunden (86400 Sek.).
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Zitat von erc Beitrag anzeigen
        PHP-Code:
        MDA_MESSAGE_TIMESTAMP TIMESTAMP '2020-01-01 20:20:20' 
        oder einfach date, wenn die Urzeit keine Rolle spielt, aber direkt im SQL ohne PHP, falls das nicht richtig rüberkam.
        PHP-Code:
        MDA_MESSAGE_TIMESTAMP DATE '2020-01-01' 
        https://docs.oracle.com/cd/B19306_01...h4datetime.htm

        Kommentar


        • #5
          Es kommt auf den Typ der Spalte an, ist es ein UnixTimeStamp?
          "Format in DB" ist wahrscheinlich falsch, es wäre "angezeigtes Format entsprechend der NLS Settings des Client(PHP)" oder es wäre Spalte vom Typ String, was natürlich fürchterlich wäre.

          Beispiel einer normalen Nutzung einer Date Spalte oder Timestamp > alle Records neuer als heute -365 Tage:
          Code:
           where meinDatum > sysdate -365
          Solche Rechenoperationen funktionieren mit allen Daten vom Typ Date oder Timestamp.

          Wenn Dein Client(PHP) eine Variable vom Typ Datum verwendet, kann sie genauso in eine Rechnung einfließen.

          Kommentar


          • #6
            Perry Staltic Alle 4 Jahre ausser bei runden 100er hat das Jahr aber 366 Tage.

            Kommentar


            • #7
              Vielleicht überrascht es Dich, protestix, das ist sowohl mir bekannt, als wahrscheinlich auch -nur geraten- dem TE.
              Ich habe selbst auch nichts von einem Jahr geschrieben, sondern von 365 Tagen. Damit habe ich eine Formulierung des TE aufgegriffen.
              Du bist ansonsten der 2. der diese wichtige Randinformation hier veröffentlicht. Mal sehen wann der 3. dazu etwas schreibt.

              Kommentar


              • #8
                Hallo,

                vielen Dank für die Antworten... Habe das Thema 365, 366 Tage berücksichtigt. Hatte ich nicht im Fokus...

                Kommentar

                Lädt...
                X