2010-09-12 36 views
16

Estoy intentando crear la siguiente tabla usando la consola de phpMyAdmin SQL:Crear una tabla en MySQL fallan cuando se utiliza CURDATE() como por defecto

CREATE TABLE dates 
(
id int NOT NULL, 
id_date datetime NOT NULL DEFAULT CURDATE(), 
PRIMARY KEY (id) 
) 

Sin embargo, me sale el siguiente error: alt text

Se muestra "CURDATE()" en rojo, así que supongo que ese es el problema.

¿Alguien podría ayudarme aquí?

+0

es 'id_date' supone que es un' 'date' o una datetime'? La forma en que lo ha llamado y lo está usando es más como una 'fecha', pero se declara como' datetime'. –

+0

Creo que si fuera una fecha y hora la función correcta sería AHORA() ¿no? aún creo que no funcionará con NOW() y mantener DATETIME – Goles

+0

NOW() tampoco funcionará. Ver http://stackoverflow.com/questions/168736/how-do-you-set-a-default-value-for-a-mysql-datetime-column –

Respuesta

24

No puede usar CURDATE() como valor predeterminado.

En su lugar, puede utilizar una columna TIMESTAMP con DEFAULT CURRENT_TIMESTAMP. Entonces tendrás que ignorar la parte del tiempo de eso.

código

Ejemplo SQL:

CREATE TABLE dates 
(
    id int NOT NULL, 
    id_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (id) 
); 
INSERT INTO dates (id) VALUES (1); 
SELECT id, DATE(id_date) AS id_date FROM dates; 

Resultado:

 
id id_date 
1 2010-09-12 
+0

¿Podría mostrarme algún código SQL como ejemplo? Realmente lo apreciaría ya que mi experiencia SQL es bastante limitada. – Goles

+1

¿Entonces esta referencia es incorrecta? http://www.w3schools.com/sql/func_curdate.asp – user2635088

+2

Sé que es tarde pero, sí, la referencia de w3schools.com es INCORRECTA. Personalmente lo he intentado muchas veces y confirmo que es falso. También de la documentación de MySQL en http://dev.mysql.com/doc/refman/5.5/en/create-table.html: 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. – AS7K

Cuestiones relacionadas