Mysql
 sql >> база данни >  >> RDS >> Mysql

timestampdiff() в MySQL еквивалентен ли е на datediff() в SQL Server?

Мисля, че това може да се дължи на едно от 2 неща:

  • Какво се класифицира като първи ден от седмицата между вашия SQL Server и MySQL екземпляри.
  • Как се броят седмиците между SQL Server и MySQL

Посочената от вас дата 2012-09-01 пада в събота, което изглежда изключва началния ден от седмицата, който обикновено е неделя или понеделник.

MySQL има начален ден по подразбиране:0 (Sunday)

За да разберете своя SQL Server началото на седмицата, можете да използвате @ @DATEFIRST като изпълните това:

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

Можете да промените изчислението си, за да работи в дни, а не в седмици и да разделите на 7, за да получите по-точна стойност, която можете да закръглите, както желаете:

MySQL:SQL Fiddle Демо

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


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

SQL сървър:SQL Fiddle демонстрация :

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

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

Можете да закръглите това нагоре или надолу в зависимост от това дали искате да съвпаднете с предишния си резултат или да го отчетете като допълнителен уикенд.

SQL Server изглежда отчита броя на неделите (ако това е началото на седмицата) между 2 дати, както е показано с тази примерна цигулка където промених диапазона от време на 2 дни, събота и неделя:

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

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

Когато същите стойности в MySQL изглежда отчитат само цели 7 дни като седмица, както е показано в тази демонстрационна цигулка :

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

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

Едва когато изминат цели 7 дни, получавате резултат от 1, както можете да видите в тази демонстрация цигулка :

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. Как да запазя изхода на MySQL заявка в excel или .txt файл?

  2. Преброяване на думите в колона на таблицата

  3. Импортирайте множество .sql дъмп файлове в mysql база данни от shell

  4. Преобразувайте sql резултата в списък на python

  5. Как да изберете две допълнителни колони от друга таблица въз основа на стойности в основната таблица?