sql >> Database >  >> RDS >> Mysql

Datum van Excel verandert bij uploaden naar mysql

Excel houdt datumwaarden vast als het "echte" aantal dagen sinds een basisdatum, die ofwel 1 januari 1900 kan zijn (de standaard voor Windows-versies van Excel) of 1 januari 1904 (de standaard voor Mac-versies van Excel):de tijd is het fractionele deel, dus de middag op een bepaalde datum is 0,5 groter dan middernacht. Om de ellende nog groter te maken, is 29 februari 1900 een geldige datum voor de Windows 1900-kalender.

Uitgaande van de Windows 1900-kalender:

function ExcelToPHP($dateValue = 0) {
    $myExcelBaseDate = 25569;
    //  Adjust for the spurious 29-Feb-1900 (Day 60)
    if ($dateValue < 60) {
        --$myExcelBaseDate;
    }

    // Perform conversion
    if ($dateValue >= 1) {
        $utcDays = $dateValue - $myExcelBaseDate;
        $returnValue = round($utcDays * 86400);
        if (($returnValue <= PHP_INT_MAX) && ($returnValue >= -PHP_INT_MAX)) {
            $returnValue = (integer) $returnValue;
        }
    } else {
        $hours = round($dateValue * 24);
        $mins = round($dateValue * 1440) - round($hours * 60);
        $secs = round($dateValue * 86400) - round($hours * 3600) - round($mins * 60);
        $returnValue = (integer) gmmktime($hours, $mins, $secs);
    }

    // Return
    return $returnValue;
}   //  function ExcelToPHP()

als Mac 1904-basis, vervang

$myExcelBaseDate = 25569;
    //  Adjust for the spurious 29-Feb-1900 (Day 60)
    if ($dateValue < 60) {
        --$myExcelBaseDate;
}

met

$myExcelBaseDate = 24107;

Dit retourneert een PHP-datum/tijd-waarde (standaard 1970-basisdatum), die u vervolgens naar wens kunt opmaken met date();




  1. Meerdere databases en transacties

  2. MySQL relationele databases gebruiken op Debian 5 (Lenny)

  3. Kan pg gem niet installeren op Mountain Lion

  4. MYSQL:hoe een tafel opnieuw te ordenen