Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tanggal dari perubahan excel saat diunggah ke mysql

Excel menyimpan nilai tanggal sebagai jumlah hari "nyata" sejak tanggal dasar, yang dapat berupa 1 Januari 1900 (default untuk Excel versi Windows) atau 1 Januari 1904 (default untuk Excel versi Mac):waktunya adalah bagian pecahan, jadi tengah hari pada tanggal tertentu 0,5 lebih besar dari tengah malam. Untuk menambah kesengsaraan, 29 Februari 1900 adalah tanggal yang valid untuk kalender Windows 1900.

Dengan asumsi kalender Windows 1900:

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

jika basis Mac 1904, ganti

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

dengan

$myExcelBaseDate = 24107;

Ini akan mengembalikan nilai tanggal/waktu PHP (tanggal dasar standar 1970), yang kemudian dapat Anda format sesuai keinginan menggunakan date();




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan php saya di mysql tanpa ulangi?

  2. Literal karakter Unicode (heksadesimal) di MySQL

  3. Server MySQL telah hilang - tepat dalam 60 detik

  4. Bagaimana cara menentukan bidang kueri induk dari dalam subkueri di MySQL?

  5. 'JIKA' dalam pernyataan 'PILIH' - pilih nilai keluaran berdasarkan nilai kolom