insertar hora fecha ejemplo desde actual mysql date default-value

hora - select date mysql



CURRENT_DATE/CURDATE() no funciona como valor de FECHA predeterminado (5)

Una pregunta bastante directa aquí, creo que esto debería funcionar, pero no es así. ¿Por qué no?

CREATE TABLE INVOICE( INVOICEDATE DATE NOT NULL DEFAULT CURRENT_DATE )


Como la otra respuesta indica correctamente, no puede usar funciones dinámicas como valor predeterminado. Puede usar TIMESTAMP con el atributo CURRENT_TIMESTAMP , pero esto no siempre es posible, por ejemplo, si desea mantener una marca de tiempo de creación y actualizada , y necesita la única columna TIMESTAMP permitida para el segundo.

En este caso, use un disparador en su lugar .


De acuerdo con esta documentation , comenzando en MySQL 8.0.13, podrá especificar:

CREATE TABLE INVOICE( INVOICEDATE DATE DEFAULT (CURRENT_DATE) )

Lamentablemente, a partir de hoy, esa versión aún no se ha publicado. Puede consultar here las últimas actualizaciones.


No funciona porque no es compatible

La cláusula DEFAULT especifica un valor predeterminado para una columna. Con una excepción, el valor predeterminado debe ser una constante; no puede ser una función o una expresión. Esto significa, por ejemplo, que no puede establecer el valor predeterminado para una columna de fecha como el valor de una función como NOW() o CURRENT_DATE . La excepción es que puede especificar CURRENT_TIMESTAMP como predeterminado para una columna TIMESTAMP

http://dev.mysql.com/doc/refman/5.5/en/create-table.html


declare su columna de fecha como NOT NULL, pero sin un valor predeterminado. Luego agrega este disparador:

USE `ddb`; DELIMITER $$ CREATE TRIGGER `default_date` BEFORE INSERT ON `dtable` FOR EACH ROW if ( isnull(new.query_date) ) then set new.query_date=curdate(); end if; $$ delimiter ;


create table the_easy_way( capture_ts DATETIME DEFAULT CURRENT_TIMESTAMP, capture_dt DATE AS (DATE(capture_ts)) )

(MySQL 5.7)