Как использовать DATEDIFF? Сколько дней в двух датах - PullRequest
1 голос
/ 22 декабря 2009

Как использовать DATEDIFF? Как я могу заставить это работать? или я должен использовать DATEDIFF совершенно по-другому?

SELECT DATEDIFF('Started ','will_end') AS 'Duration' FROM my_table WHERE id = '110';

Я пытаюсь получить ответ, сколько дней в двух датах.

Я бы хотел получить ответ типа:
Продолжительность = 7 дней;

У меня есть такая база данных:

Начато | will_end
2009-12-17 | 2009-12-24
2009-12-12 | 2009-12-26

Ответы [ 4 ]

4 голосов
/ 22 декабря 2009

Сначала will_end, started, второй:

SELECT  DATEDIFF('2009-12-24', '2009-12-17') 

---
  7

Кроме того, удалите одинарные кавычки из имен полей:

SELECT  DATEDIFF(will_end, started) AS Duration
FROM    my_table
WHERE   id = 110

или замените их обратными чертами:

SELECT  DATEDIFF(`will_end`, `started`) AS `Duration`
FROM    `my_table`
WHERE   `id` = 110
2 голосов
/ 22 декабря 2009

Получаете ли вы NULL результат? В вашем запросе имена столбцов заключены в одинарные кавычки, что означает, что вы передаете строки 'Started ' и 'will_end' в DATEDIFF, а не значения столбцов. Попробуйте удалить одинарные кавычки, и вы увидите некоторые результаты:

SELECT DATEDIFF(Started, will_end) AS Duration FROM my_table WHERE id = '110';

Обратите внимание, что это даст вам отрицательный результат. Чтобы получить положительный результат, измените порядок столбцов:

SELECT DATEDIFF(will_end, Started) AS Duration FROM my_table WHERE id = '110';
0 голосов
/ 22 декабря 2009

Я думаю, что есть 3 параметра для передачи в DATEDIFF (datepart, startdate, enddate)

твой код будет DATEDIFF (dd, 'Started', 'will_end')

http://msdn.microsoft.com/en-us/library/ms189794.aspx

0 голосов
/ 22 декабря 2009

заменить заказ

DATEDIFF ( 'will_end', 'Начало')

...