문제

I have this problem if anyone can help. There is a field (date) in my table (table1) that is a date in the format 3/31/1988 (M/D/y), and my necessity is to define how many days have passed since that date.

I have tried to give this instruction

SELECT DATEDIFF(CURDATE(), date) AS days
FROM table1

But it gives back 'null' and I think this happens because the two date formats are different (CURDATE() is YMD.....

Is it correct? can anyone help me? Thank you in advance

도움이 되었습니까?

해결책

You can use STR_TO_DATE():

SELECT DATEDIFF(CURDATE(),STR_TO_DATE(date, '%m/%d/%Y')) AS days
FROM table1

SQLFiddle Demo

다른 팁

Your DATE field should have DATE or DATETIME format to be used as DATEDIFF argument correctly.

Also DATE is MySQL keyword and I am not sure that you can use it as valid field name.

You can use this for accurate result

SELECT DATEDIFF(CURDATE(), DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(`date`)), '%Y-%m-%d')) AS days FROM `table1`

If you want to consider results without - signs that you have to follow parameters position as below :

SELECT DATEDIFF(Big_Date,Small_Date) AS days FROM table1.

positive results e.g 5 (with no sign), if you place a Small date as the first parameter then it will results minus sign e.g -5.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top