Reputation: 129
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
Upvotes: 11
Views: 44071
Reputation: 37
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.
Upvotes: -1
Reputation: 152
You can use this for accurate result
SELECT DATEDIFF(CURDATE(), DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(`date`)), '%Y-%m-%d')) AS days FROM `table1`
Upvotes: 2
Reputation: 16223
You can use STR_TO_DATE()
:
SELECT DATEDIFF(CURDATE(),STR_TO_DATE(date, '%m/%d/%Y')) AS days
FROM table1
Upvotes: 16
Reputation: 11061
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.
Upvotes: 2