sql >> Databáze >  >> RDS >> Mysql

Je timestampdiff() v MySQL ekvivalentní datediff() na SQL Server?

Myslím, že to může být způsobeno jednou ze 2 věcí:

  • Co je klasifikováno jako první den v týdnu mezi instancemi SQL Server a MySQL.
  • Jak se počítají týdny mezi SQL Serverem a MySQL

Vámi uvedené datum 2012-09-01 připadá na sobotu, což zřejmě vylučuje začátek týdne, kterým je obvykle neděle nebo pondělí.

MySQL má výchozí počáteční den:0 (Sunday)

Chcete-li zjistit svůj SQL Server začátek týdne, můžete použít @ @DATEFIRST spuštěním tohoto:

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

Svůj výpočet můžete změnit tak, aby pracoval na dny, nikoli týdny, a dělení 7, abyste získali přesnější hodnotu, kterou můžete zaokrouhlit, jak chcete:

MySQL:Ukázka SQL Fiddle

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


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

SQL Server:Ukázka SQL Fiddle :

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

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

Můžete to zaokrouhlit nahoru nebo dolů v závislosti na tom, zda se chcete srovnat s předchozím výsledkem, nebo to počítat jako víkend navíc.

Zdá se, že SQL Server počítá počet nedělí (pokud je to začátek týdne) mezi 2 daty, jak je znázorněno pomocí tento příklad houslí kde jsem změnil časové období na 2 dny, sobotu a neděli:

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

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

Zdá se, že stejné hodnoty v MySQL počítají pouze celých 7 dní jako týden, jak je uvedeno v tyto ukázkové housle :

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

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

Pouze když uplyne celých 7 dní, dostanete výsledek 1, jak můžete vidět v této ukázce housle :

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

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



  1. Createuser:nemohl se připojit k databázi postgres:FATAL:role tom neexistuje

  2. Jak používat Hibernate eqOrIsNull()

  3. Porovnání Oracle MySQL, Percona Server a MariaDB

  4. Nelze nainstalovat mysql gem na OS X