2013-12-14 7 views
0

내가, 사용자가 '2013년 12월 29일 0시 0분 0초'Mysql 날짜를 계산하는 방법과 날짜를 계산하는 방법?

총 일 '2013년 12월 14일 0시 0분 0초'에서 내 시나리오의

 > ID    FromDate       ToDate 
    > --    --------       ------- 
    > 1    '2013-12-14 00:00:00'   '2013-12-23 00:00:00' 
    > 2    '2013-12-24 00:00:00'   '2013-12-31 00:00:00' 

검색이 있다고 가정 "15"입니다. 내가 좋아하는 출력 뭔가를 원하는이

> ID     FromDate       ToDate    countdays 
> --    --------       ------- 
> 1    '2013-12-14 00:00:00'   '2013-12-23 00:00:00'   9 
> 2    '2013-12-24 00:00:00'   '2013-12-31 00:00:00'   6 

9 + 6 = 15

COUNT 일 난 '에서 일을 계산하려면 9 2 행하므로 1 행 FROMDATE 및 TODATE은 사용자 FROMDATE 및 TODATE 사이

2013- 12-24 00:00:00 '까지'2013-12-29 00:00:00 'mysql을 어떻게 할 수 있습니까?

+0

시간이 항상 자정임을 알면 후자에서 이전 날을 빼고 1을 추가하십시오. –

+0

@Pieter Geerkens. 사용자가 한 달 동안 두 날짜 사이를 검색한다고 가정합니다. 이 질문에 대한 유효한 답변이 아닙니다. –

+0

@PeteR : 아니요. SQL 날짜 - 시간 유형은 정수 부분이 일 (에포크의 시작부터 세지 않음)이고 소수 부분이 일의 분수 인 부동 소수점 표현에 데이터를 저장합니다. 몇 가지 SQL 방언을 사용했으며, 이는 항상 내 경험에서 사실입니다. –

답변

1

SQL 선택 ID, FROMDATE, TODATE, DATEDIFF (DAY, TODATE, FROMDATE) TABLENAME에서 카운트 SQL에서

구문으로 :

DATEDIFF (날짜 부분, STARTDATE, ENDDATE)

MYSQL

012 3,516,
Select ID, FromDate, ToDate , DATEDIFF(ToDate, FromDate) As Count From TableName 

예 :

DATEDIFF(expr1,expr2) 

DATEDIFF() returns expr1 – expr2 expressed as a value in days from one date to the other. expr1 and expr2 are date or date-and-time expressions. Only the date parts of the values are used in the calculation. 

mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30'); 
     -> 1 
mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31'); 
     -> -31 

출처 : Date Difference documentation by MYSQL

희망이

0

당신은 이런 식

SELECT t.*, 
     DATE(LEAST(t.todate, s.todate)) 
    - DATE(GREATEST(t.fromdate, s.fromdate)) countdays 
    FROM table1 t CROSS JOIN 
(
    SELECT '2013-12-14 00:00:00' fromdate, 
     '2013-12-29 00:00:00' todate 
) s 
WHERE s.fromdate BETWEEN t.fromdate AND t.todate 
    OR s.todate BETWEEN t.fromdate AND t.todate 
을 시도 할 수 있습니다3210 여기에 SQLFiddle 데모
관련 문제