In an existing database, I've age column (INT). Now I need to set it as dob (DATETIME).
I try doing so through PHPMyAdmin, giving CURRENT_TIMESTAMP as default value as defined by answer with 138 upvotes. However PHPMyAdmin is complaining #1067 - invalid default value for 'dob'
as in attached screenshot:
Can someone please suggest why I'm getting that error and how to fix that?
The best way for DateTime is use a Trigger:
You can't set CURRENT_TIMESTAMP as default value with DATETIME.
But you can do it with TIMESTAMP.
See the difference here.
Words from this blog
The DEFAULT value clause in a data type specification indicates a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression.
This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE.
The exception is that you can specify CURRENT_TIMESTAMP as the default for a TIMESTAMP column.
You're getting that error because the default value
current_time
is not valid for the typeDATETIME
. That's what it says, and that's whats going on.The only field you can use
current_time
on is a timestamp.I don't think you can achieve that with mysql date. You have to use timestamp or try this approach..
Set the type of the field as TIMESTAMP too.