2012-07-18 22 views
5

tengo una columna de tipo de fecha en MySql. por defecto el formato de fecha MySql es AAAA/MM/DD. pero actualmente prefiero usar el formato DD/MM/YYYY.cambio de fecha de formato MySql

¿Pude cambiar el formato de fecha de la columna?

Respuesta

0

Trate echo date('d/m/Y', strtotime($date));

Esto llevará su fecha existente, convertirlo en cuando UNIX y transformar de nuevo a una fecha con el formato requerido.

+0

Pregunta es pedir el formato de fecha de MySQL. – Kermit

2

No, no puede cambiar el formato predeterminado de MySQL para las columnas DATE, DATETIME o TIMESTAMP.

Pero puede usar las funciones de MySQL en sus sentencias SQL para generar una expresión DATE como una cadena en un formato diferente.

DATE_FORMAT(datecol , '%m/%d/%Y') AS datecol 

(Eso funcionará bien en la lista SELECT, pero evitar el uso de esto en ningún predicado (es decir, la cláusula WHERE). Allí, tendrá que hacer referencia a la columna al descubierto, y convertir las cadenas de su formato preferido ' MM/DD/AAAA' utilizando la función STR_TO_DATE, por ejemplo

datecol >= STR_TO_DATE('07/16/2012','%m/%d/%Y') 

con eso dicho, creo que realmente va a ser mejor servido con el formato de fecha por defecto de MySQL en sus interacciones con la base de datos, y gastos de formato cambios en su código.

1

Otros DBMS tienen un formato predeterminado que puede cambiar, incluso en una sesión. Por ejemplo, en Oracle puede simplemente cambiar la variable de sesión NLS_DATE_FORMAT y Oracle usará su formato personalizado tanto para la entrada como para la salida. MySQL no.

Todavía no un par de server variables (date_format y datetime_format) que puede tener la tentación de considerar adecuado para este propósito:

mysql> SHOW VARIABLES LIKE 'date%_format'; 
+-----------------+-------------------+ 
| Variable_name | Value    | 
+-----------------+-------------------+ 
| date_format  | %Y-%m-%d   | 
| datetime_format | %Y-%m-%d %H:%i:%s | 
+-----------------+-------------------+ 

Para empezar, están del lado del servidor y no son dinámicos (no se pueden establecer en tiempo de ejecución). Pero la peor parte es que nunca fueron realmente utilizados. Estas variables nunca han afectado el formato de fecha en absoluto. Actualmente están en desuso y en cola para su eliminación.

En resumen: no, no se puede. Los formatos de fecha son fijos.

0

Como otros han explicado que no es posible, pero esta es una solución alternativa, requiere un poco de ajuste, pero funciona como una columna de fecha.

Empecé a pensar, cómo podría hacer que el formateo sea posible. Tengo una idea. ¿Qué hay de hacer que se desencadene? Quiero decir, agregando una columna con el tipo char, y luego actualizando esa columna usando un disparador de MySQL. ¡Y funcionó! Hice algunas investigaciones relacionadas con los factores desencadenantes, y que finalmente culmine en estas consultas:

CREATE TRIGGER timestampper BEFORE INSERT ON table 
FOR EACH 
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d/%m/%Y'); 
CREATE TRIGGER timestampper2 BEFORE UPDATE ON table 
FOR EACH 
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d/%m/%Y'); 

no puede utilizar TIMESTAMP o DATE como un tipo de columna, ya que estos tienen su propio formato, y actualizar automáticamente

Así que, aquí está la alternativa de fecha y hora alternativa. Espero que esto haya ayudado, al menos estoy contento de haber conseguido esto funcionando.

Cuestiones relacionadas