sql >> Database teknologi >  >> RDS >> Mysql

Datoen fra excel ændres, når den uploades til mysql

Excel holder datoværdier som det "rigtige" antal dage siden en basisdato, som kan være enten 1. januar 1900 (standard for Windows-versioner af Excel) eller 1. januar 1904 (standard for Mac-versioner af Excel):tiden er brøkdelen, så middag på en given dato er 0,5 større end midnat. For at øge elendigheden er 29. februar 1900 en gyldig dato for Windows 1900-kalenderen.

Forudsat Windows 1900-kalenderen:

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()

hvis Mac 1904 base, udskift

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

med

$myExcelBaseDate = 24107;

Dette vil returnere en PHP dato/tidsværdi (standard 1970 basisdato), som du derefter kan formatere som du ønsker ved hjælp af date();




  1. SQLite Vælg Distinct

  2. Konfigurationsparameter work_mem i PostgreSQL på Linux

  3. CASE vs. DECODE

  4. Daglig database backup ved hjælp af Cron Job