Eine "nummer" in ein Datum umwandeln

  • Hallo,

    ich habe ein ales Newssystem in Betrieb welches Das Datum wie folgt als "nummer" abgespeichert hat: 2005110901

    Das Jahr 2005 Monat 11 Tag 09 Lfd. Nummer 01

    Wie kann ich das evtl in nen Timestamp umwandeln, dass ich die news in mein neues newssystem übernehmen kann ?

  • Zitat von Ronald

    Moin!

    Das Umwalden des Datum ist kein Problem, was soll aber mit der lfd. Nummer passieren?

    Fragt ...

    Ronald

    na am besten wir würden die daten einmal nach der "nummer" sortieren, dann haben wir das älteste oben geben einer neuen spalte (ID) die lfd. Nummer 1 und dann so weiter .. als zweite spalte fügen wir datum ein und generieren den timestamp.

    würde das so gehen ?

  • Ich gehe mal davon aus, daß sich die laufende Nummer analog zum Datum hochzählt, also meinetwegen 2005110901, 2005110902,2005111103,2005111204, pp.
    Ferner vermute ich mal, daß du für die einzelnen News lediglich das Datum verwendest, ohne Zeitangaben, d.h. wir können dann ganz einfach die lfd. Nummer als Minutenwert benutzen und sie so in den Timestamp integrieren - du hättest dann für die Umwandlung von 60*24 fortlaufende Nummern = 1440 News. So viele werden es ja sicherlich noch nicht sein, sonst müssen wir die Sekunden des Timestamp mißbrauchen, dann hättest du 86400 Möglichkeiten - das sollte wohl reichen.

    Gehen wir davon aus, du hast die Nummer der News als Wert in eine Variable übernommen, nennen wir sie z.B. $Nr_alt.

    Code
    $Jahr = substr($Nr_alt,0,4)
    $Monat= substr($Nr_alt,4,2)
    $Tag = substr($Nr_alt,6,2)
    $LfdNr = substr($Nr_alt,8,2)
    
    
    $NR_neu = mktime(0,$LfdNr,0,$Monat,$Tag,$Jahr);

    $NR-neu ist jetzt ein timestamp, aus dem Wert "2005110901" wurde "09.11.05, 00:01 Uhr", aus der zweiten Nummer meines Beispiel würde dann der Timestamp für "09.11.05, 00:02 Uhr", "11.11.05, 00:03 Uhr" und so weiter. So hast du gesichert, daß es keine gleichen timestamps gibt, wenn das Datum identisch ist. Nun mußt du das ganze nur noch zurückspeichern - voila.

    Bei der Eingabe künftiger News solltest du ganz einfach die Uhrzeit mit übergeben und in den timestamp integrieren, dann hast du auch keine doppel und die ganze Aktion mit Nummern für die News kannst du dir entweder sparen, oder du nimmst die Datensatznummern, welche ja auch fortlaufend sind.

    G.a.d.M.

    Ronald

  • hi, danke schonmal.

    also die lfd nummer ist pro datum 3 artikel an tag X also 01, 02, 03

    am nächsten tag dann wieder 01,02 usw...

    ich überlege jetzt grade wie ich die datenbank am besten durchgehe. wie würdest du das machen ?

    das hier funzt nicht, vielleicht kann ich um die zeit auch nur nichtmehr nachdenken ... timestamp ist 00000000000000

    [php:1:82659d0f83]
    <?php
    //Testdatenbank
    $server = "localhost";
    $user = "XXXXXX";
    $pass = "XXXXXX";
    $datenbank = "XXXXXX";
    //////////////////////


    $conn = @mysql_connect($server, $user, $pass);
    @mysql_select_db($datenbank, $conn);

    if ($conn!=TRUE)
    {
    echo "Verbindungsfehler: ".mysql_error()." !! Versuchen Sie es zu einem sp&auml;teren Zeitpunkt nochmals. Danke.";
    die;
    }

    $query = "SELECT * FROM `tsv_artikel_neu`";

    $result=mysql_query($query);
    while ($daten=mysql_fetch_array($result, MYSQL_ASSOC))

    {
    for ($i=1; $i<=71; $i++) {
    echo "$i" ;
    echo "
    ";

    $Nr_alt = ($daten[nummer]);

    $Jahr = substr($Nr_alt,0,4) ;
    $Monat= substr($Nr_alt,4,2) ;
    $Tag = substr($Nr_alt,6,2) ;
    $LfdNr = substr($Nr_alt,8,2);

    $NR_neu = mktime(0,$LfdNr,0,$Monat,$Tag,$Jahr);

    $sql="UPDATE `tsv_artikel_neu` SET `datum`='{$NR_neu}'";
    mysql_query($sql) or die(mysql_error());
    } }


    ?>[/php:1:82659d0f83]

  • Zitat von GreenRover

    wiso nimmst du das datum denn in dem format?? nimm doch das mysql format oder unix timestam, die sind doch viel viel praktischer

    meinst du jetzt roland oder mich ? :)

    datum heisst die eine spalte in die der timestamp eingefügt werden soll.
    ich verstehe leider grade nicht wie du das meinst ( noch zu dolle youngster )

    falls du das format meinst, welches ich umwandeln muss ... also das ursprungsformat/die nummer .... das war ein altes tutorial welches ich aus einem buch nachgebaut hatte ... aber das hat nun seit 01/2004 seinen dienst gemeistert

    Grüsse aus Hamburg