sql >> Database >  >> RDS >> Mysql

Is timestampdiff() in MySQL gelijk aan datediff() in SQL Server?

Ik denk dat dit kan worden veroorzaakt door een van de volgende twee dingen:

  • Wat wordt geclassificeerd als de eerste dag van de week tussen uw SQL Server- en MySQL-instanties.
  • Hoe weken worden geteld tussen SQL Server en MySQL

Uw opgegeven datum 2012-09-01 valt op een zaterdag, wat de startdag van de week, meestal zondag of maandag, lijkt uit te sluiten.

MySQL heeft een standaard startdag van:0 (Sunday)

Om uw SQL Server-begin van de week te achterhalen, kunt u @ gebruiken @DATEFIRST door dit uit te voeren:

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

U kunt uw berekening wijzigen om op dagen te werken in plaats van weken en te delen door 7 om een ​​nauwkeuriger waarde te krijgen, die u naar believen kunt afronden:

MySQL:SQL Fiddle-demo

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


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

SQL-server:SQL Fiddle-demo :

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

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

Je kunt dat naar boven of naar beneden afronden, afhankelijk van of je je vorige resultaat wilt evenaren of het als een extra weekend wilt tellen.

SQL Server lijkt het aantal zondagen (als dat het begin van de week is) tussen 2 datums te tellen, zoals weergegeven met deze voorbeeld viool waar ik het datumbereik heb gewijzigd in 2 dagen, een zaterdag en een zondag:

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

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

Waar dezelfde waarden in MySQL alleen een volledige 7 dagen als een week lijken te tellen, zoals weergegeven in deze demo viool :

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

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

Pas als er 7 volledige dagen verstrijken, krijg je het resultaat van 1, zoals je kunt zien in deze demo viool :

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

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



  1. Dia's en voorbeelden van SQL-intersecties

  2. Illegale mix van sorteringen voor bewerking 'like' tijdens het zoeken met Ignited-Datatables

  3. MediumBlob in Laravel-databaseschema

  4. HTML/PHP-vervolgkeuzelijst invullen op basis van eerste vervolgkeuzelijst