In MySQL I want to insert a new row into a table using the date function.
Should I code the statement like this?
But how should I format the date?
From ANSI SQL-92 standard (ISO/IEC 9075:1992, Database Language SQL- July 30, 1992):
<date literal> ::= DATE <date string> <date string> ::= <quote> <date value> <quote> <date value> ::= <years value> <minus sign> <months value> <minus sign> <days value> <years value> ::= <datetime value> <months value> ::= <datetime value> <days value> ::= <datetime value> <datetime value> ::= <unsigned integer> Let unsigned integer be an axiom, then that text above translates to example date literal below:
DATE '2014-04-01' It should work in almost all relational databases. All modern RDBMS have their own extensions, so I'm recommending you to read MySQL Reference Manual (chapter: Date and Time Literals) to learn more.
We can use MySQL STR_TO_DATE function with a format model that matches the string we want to convert to DATE.
As a demonstration:
SELECT STR_TO_DATE('April 1, 2014','%M %e, %Y') This converts the string into a DATE value. Default representation for DATE values is YYYY-MM-DD, so if we run that query, we expect it to return 2014-04-01.
We can use an expression as a value in an INSERT statement. For example, assuming the target column is datatype DATE (or DATETIME or TIMESTAMP) and is named mydatecol, we could do something like this:
INSERT INTO mytable (foo,mydatecol) VALUES ('bar',STR_TO_DATE('April 1, 2014','%M %e, %Y')) MySQL functions are documented in MySQL Reference Manual
STR_TO_DATE
Reference: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_str-to-date
The format model/specifiers are documented under DATE_FORMAT function
Reference: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format
Find %M, %e and %Y in in the table of specifiers for meanings.