Conversión de string a fecha

15/03/2007 - 13:36 por David | Informe spam
Saludos a todos


Estoy haciendo una select contra un mysql, e intento hacer un order by fecha
desc

lo que pasa es que el campo es string y por supuesto la ordenación no es
correcta.

Necesito poder convertir en la select el campo string a fecha, lo he
intentado con Cdate pero no lo acepta el mysql.

Alguien puede darme algun ejemplo de una select similar??

Muchas Gracias

David

Preguntas similare

Leer las respuestas

#1 Miguel Gonzalez
15/03/2007 - 17:09 | Informe spam
Hola David.

MySql soporta multitud de funciones. Creo que la que tú necesitas es:

STR_TO_DATE(str,format)

Donde "str" corresponde al texto (string) que contiene la fecha y
"format" indica el formato que contiene.

Por ejemplo, convierte a fecha la cadena "15/03/2007":

STR_TO_DATE("15/03/2007","%d/%m/%Y")

Mírate la referencia de la función y las especificaciones de formato en:

http://dev.mysql.com/doc/refman/5.0...tions.html


Saludos!

Miguel


David escribió:
Saludos a todos


Estoy haciendo una select contra un mysql, e intento hacer un order by fecha
desc

lo que pasa es que el campo es string y por supuesto la ordenación no es
correcta.

Necesito poder convertir en la select el campo string a fecha, lo he
intentado con Cdate pero no lo acepta el mysql.

Alguien puede darme algun ejemplo de una select similar??

Muchas Gracias

David
Respuesta Responder a este mensaje
#2 David
16/03/2007 - 00:01 | Informe spam
Si la he mirado pero mi problema es que el string en cuestion es un campo de
la tabla y esto lo he de hacer en la select

"select * from tabla order by STR_TO_DATE(fecha,"formato") desc"

seria asi???

Muchas gracias

David
"Miguel Gonzalez" wrote:


Hola David.

MySql soporta multitud de funciones. Creo que la que tú necesitas es:

STR_TO_DATE(str,format)

Donde "str" corresponde al texto (string) que contiene la fecha y
"format" indica el formato que contiene.

Por ejemplo, convierte a fecha la cadena "15/03/2007":

STR_TO_DATE("15/03/2007","%d/%m/%Y")

Mírate la referencia de la función y las especificaciones de formato en:

http://dev.mysql.com/doc/refman/5.0...tions.html


Saludos!

Miguel


David escribió:
> Saludos a todos
>
>
> Estoy haciendo una select contra un mysql, e intento hacer un order by fecha
> desc
>
> lo que pasa es que el campo es string y por supuesto la ordenación no es
> correcta.
>
> Necesito poder convertir en la select el campo string a fecha, lo he
> intentado con Cdate pero no lo acepta el mysql.
>
> Alguien puede darme algun ejemplo de una select similar??
>
> Muchas Gracias
>
> David

Respuesta Responder a este mensaje
#3 Miguel Gonzalez
16/03/2007 - 10:19 | Informe spam
Hola David.

Justamente la consulta sería tal como dices:

SELECT fecha FROM tabla ORDER BY STR_TO_DATE(fecha, "formato") DESC

El punto que hay que cuidar es la parte de formato de la función. Si el
contenido del campo no se corresponde con el formato especificado no
funcionará.

Una recomendación: Si el campo que almacena la fecha es de tipo
"string", ¿no has sopesado la posibilidad de cambiar su tipo de datos a
"date"? Este tipo es mucho más eficiente que el "string" a la hora de
trabajar con fechas: se ahorra espacio; tiene una mejor "performance"; y
permite realizar muchos cálculos típicos con fechas sin necesidad de
hacer conversiones previas (imagina que tienes un millón de registros y
que tienes que convertir el campo "string" a "fecha" para poder realizar
un cálculo... tendrías que realizar ¡un millón de veces! la conversión
en cada consulta...

Saludos!

Miguel

David escribió:
Si la he mirado pero mi problema es que el string en cuestion es un campo de
la tabla y esto lo he de hacer en la select

"select * from tabla order by STR_TO_DATE(fecha,"formato") desc"

seria asi???

Muchas gracias

David
"Miguel Gonzalez" wrote:

Hola David.

MySql soporta multitud de funciones. Creo que la que tú necesitas es:

STR_TO_DATE(str,format)

Donde "str" corresponde al texto (string) que contiene la fecha y
"format" indica el formato que contiene.

Por ejemplo, convierte a fecha la cadena "15/03/2007":

STR_TO_DATE("15/03/2007","%d/%m/%Y")

Mírate la referencia de la función y las especificaciones de formato en:

http://dev.mysql.com/doc/refman/5.0...tions.html


Saludos!

Miguel


David escribió:
Saludos a todos


Estoy haciendo una select contra un mysql, e intento hacer un order by fecha
desc

lo que pasa es que el campo es string y por supuesto la ordenación no es
correcta.

Necesito poder convertir en la select el campo string a fecha, lo he
intentado con Cdate pero no lo acepta el mysql.

Alguien puede darme algun ejemplo de una select similar??

Muchas Gracias

David
Respuesta Responder a este mensaje
#4 David
16/03/2007 - 13:03 | Informe spam
Buenos Dias Miguel, realmente cuando se montó la tabla, no entiendo porque se
hizo string y no datetime, pero ahora cambiarlo implicaria cambiar mucho
código en diversos programas. De todas formas, no se mueven muchos registros.

Acabo de relaizar la select directamente sobre un mysql browser y no acaba
de funcionar pues me da error en los parámetros del STR_TO_DATE
la query es la siguiente:

SELECT * FROM tabla ORDER BY STR_TO_DATE(fecha, '%d-%m-%Y %H.%i.%s') DESC

el campo string consta de la fecha y la hora

Muchas Gracias

David
"Miguel Gonzalez" wrote:


Hola David.

Justamente la consulta sería tal como dices:

SELECT fecha FROM tabla ORDER BY STR_TO_DATE(fecha, "formato") DESC

El punto que hay que cuidar es la parte de formato de la función. Si el
contenido del campo no se corresponde con el formato especificado no
funcionará.

Una recomendación: Si el campo que almacena la fecha es de tipo
"string", ¿no has sopesado la posibilidad de cambiar su tipo de datos a
"date"? Este tipo es mucho más eficiente que el "string" a la hora de
trabajar con fechas: se ahorra espacio; tiene una mejor "performance"; y
permite realizar muchos cálculos típicos con fechas sin necesidad de
hacer conversiones previas (imagina que tienes un millón de registros y
que tienes que convertir el campo "string" a "fecha" para poder realizar
un cálculo... tendrías que realizar ¡un millón de veces! la conversión
en cada consulta...

Saludos!

Miguel

David escribió:
> Si la he mirado pero mi problema es que el string en cuestion es un campo de
> la tabla y esto lo he de hacer en la select
>
> "select * from tabla order by STR_TO_DATE(fecha,"formato") desc"
>
> seria asi???
>
> Muchas gracias
>
> David
> "Miguel Gonzalez" wrote:
>
>> Hola David.
>>
>> MySql soporta multitud de funciones. Creo que la que tú necesitas es:
>>
>> STR_TO_DATE(str,format)
>>
>> Donde "str" corresponde al texto (string) que contiene la fecha y
>> "format" indica el formato que contiene.
>>
>> Por ejemplo, convierte a fecha la cadena "15/03/2007":
>>
>> STR_TO_DATE("15/03/2007","%d/%m/%Y")
>>
>> Mírate la referencia de la función y las especificaciones de formato en:
>>
>> http://dev.mysql.com/doc/refman/5.0...tions.html
>>
>>
>> Saludos!
>>
>> Miguel
>>
>>
>> David escribió:
>>> Saludos a todos
>>>
>>>
>>> Estoy haciendo una select contra un mysql, e intento hacer un order by fecha
>>> desc
>>>
>>> lo que pasa es que el campo es string y por supuesto la ordenación no es
>>> correcta.
>>>
>>> Necesito poder convertir en la select el campo string a fecha, lo he
>>> intentado con Cdate pero no lo acepta el mysql.
>>>
>>> Alguien puede darme algun ejemplo de una select similar??
>>>
>>> Muchas Gracias
>>>
>>> David

Respuesta Responder a este mensaje
#5 Miguel Gonzalez
16/03/2007 - 13:36 | Informe spam
Hola David.

¿Qué error da?

Tal como expones en el formato, los datos del campos se guardan así:

"16-03-2007 13.31.09"

¿Es correcto?

Presta atención a los ceros antes de los números menores a 10... Marzo
se escribe "03", por ejemplo, y el año tiene que tener cuatro dígitos.
La hora va de 00 a 24, y los minutos y segundos de 00 a 59.


Saludos!

Miguel

David escribió:
Buenos Dias Miguel, realmente cuando se montó la tabla, no entiendo porque se
hizo string y no datetime, pero ahora cambiarlo implicaria cambiar mucho
código en diversos programas. De todas formas, no se mueven muchos registros.

Acabo de relaizar la select directamente sobre un mysql browser y no acaba
de funcionar pues me da error en los parámetros del STR_TO_DATE
la query es la siguiente:

SELECT * FROM tabla ORDER BY STR_TO_DATE(fecha, '%d-%m-%Y %H.%i.%s') DESC

el campo string consta de la fecha y la hora

Muchas Gracias

David
"Miguel Gonzalez" wrote:

Hola David.

Justamente la consulta sería tal como dices:

SELECT fecha FROM tabla ORDER BY STR_TO_DATE(fecha, "formato") DESC

El punto que hay que cuidar es la parte de formato de la función. Si el
contenido del campo no se corresponde con el formato especificado no
funcionará.

Una recomendación: Si el campo que almacena la fecha es de tipo
"string", ¿no has sopesado la posibilidad de cambiar su tipo de datos a
"date"? Este tipo es mucho más eficiente que el "string" a la hora de
trabajar con fechas: se ahorra espacio; tiene una mejor "performance"; y
permite realizar muchos cálculos típicos con fechas sin necesidad de
hacer conversiones previas (imagina que tienes un millón de registros y
que tienes que convertir el campo "string" a "fecha" para poder realizar
un cálculo... tendrías que realizar ¡un millón de veces! la conversión
en cada consulta...

Saludos!

Miguel

David escribió:
Si la he mirado pero mi problema es que el string en cuestion es un campo de
la tabla y esto lo he de hacer en la select

"select * from tabla order by STR_TO_DATE(fecha,"formato") desc"

seria asi???

Muchas gracias

David
"Miguel Gonzalez" wrote:

Hola David.

MySql soporta multitud de funciones. Creo que la que tú necesitas es:

STR_TO_DATE(str,format)

Donde "str" corresponde al texto (string) que contiene la fecha y
"format" indica el formato que contiene.

Por ejemplo, convierte a fecha la cadena "15/03/2007":

STR_TO_DATE("15/03/2007","%d/%m/%Y")

Mírate la referencia de la función y las especificaciones de formato en:

http://dev.mysql.com/doc/refman/5.0...tions.html


Saludos!

Miguel


David escribió:
Saludos a todos


Estoy haciendo una select contra un mysql, e intento hacer un order by fecha
desc

lo que pasa es que el campo es string y por supuesto la ordenación no es
correcta.

Necesito poder convertir en la select el campo string a fecha, lo he
intentado con Cdate pero no lo acepta el mysql.

Alguien puede darme algun ejemplo de una select similar??

Muchas Gracias

David
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida