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

Apakah timestampdiff() di MySQL setara dengan dateiff() di SQL Server?

Saya pikir ini bisa disebabkan oleh salah satu dari 2 hal:

  • Apa yang diklasifikasikan sebagai hari pertama dalam seminggu antara instance SQL Server dan MySQL Anda.
  • Berapa minggu dihitung antara SQL Server dan MySQL

Tanggal Anda 2012-09-01 jatuh pada hari Sabtu, yang tampaknya mengesampingkan hari awal dalam seminggu, yang biasanya hari Minggu atau Senin.

MySQL memiliki hari mulai default:0 (Sunday)

Untuk mengetahui awal minggu SQL Server Anda, Anda dapat menggunakan @ @DATEFIRST dengan menjalankan ini:

select @@DATEFIRST -- default US English = 7 (Sunday)

Anda dapat mengubah perhitungan Anda untuk bekerja pada hari daripada minggu dan membaginya dengan 7 untuk mendapatkan nilai yang lebih akurat, yang dapat Anda bulatkan sesuka Anda:

MySQL:Demo SQL Fiddle

SELECT TIMESTAMPDIFF(DAY, '2012-09-01', '2014-10-01')/7 AS NoOfWeekends1


| NOOFWEEKENDS1 |
|---------------|
|      108.5714 |

SQL Server:Demo SQL Fiddle :

SELECT DATEDIFF(d,'2012-09-01','2014-10-01')/7.0 AS NoOfWeekends1

| NOOFWEEKENDS1 |
|---------------|
|    108.571428 |

Anda dapat membulatkannya ke atas atau ke bawah tergantung pada apakah Anda ingin mencocokkan hasil sebelumnya atau menghitungnya sebagai akhir pekan tambahan.

SQL Server tampaknya menghitung jumlah hari Minggu (jika itu awal minggu) antara 2 tanggal seperti yang ditunjukkan dengan contoh biola ini di mana saya telah mengubah rentang tanggal menjadi 2 hari, hari Sabtu dan Minggu:

SELECT DATEDIFF(wk,'2012-09-01','2012-09-02') AS NoOfWeekends1

| NOOFWEEKENDS1 |
|---------------|
|             1 |

Sedangkan nilai yang sama di MySQL tampaknya hanya menghitung 7 hari penuh seminggu seperti yang ditunjukkan dalam biola demo ini :

SELECT TIMESTAMPDIFF(WEEK, '2012-09-01', '2012-09-02') AS NoOfWeekends1

| NOOFWEEKENDS1 |
|---------------|
|             0 |

Hanya setelah 7 hari penuh Anda mendapatkan hasil 1 seperti yang Anda lihat di demo ini biola :

SELECT TIMESTAMPDIFF(WEEK, '2012-09-01', '2012-09-08') AS NoOfWeekends1

| NOOFWEEKENDS1 |
|---------------|
|             1 |



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GALAT 2002 (HY000):Tidak dapat terhubung ke server MySQL lokal melalui soket '/tmp/mysql.sock'

  2. Penomoran baris dengan p:dataTable

  3. Kolom pembaruan MySQL hanya jika nilainya tidak kosong di mana

  4. SQL SELECT LIKE (Kasing tidak peka)

  5. ld:perpustakaan tidak ditemukan untuk -lzstd saat bundel menginstal untuk permata mysql2 Ruby di macOS Big Sur 11.4