Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   SQL Server (http://www.forosdelweb.com/f87/)
-   -   Ordenar fechas ya convertidas (http://www.forosdelweb.com/f87/ordenar-fechas-ya-convertidas-541839/)

Kurace 18/12/2007 00:45

Ordenar fechas ya convertidas
 
Hola, buenos días. Mi duda es la siguiente.

Tengo una base de datos en el que mi jefe me pidió que realizara una consulta con fechas del tipo siguiente:

"1 de Diciembre del 2007".

Bueno, pues leyendo un poco, conseguí hacerlo gracias a los CONVERT que tiene SQL Server.

De este modo se tendría:

select distinct convert(varchar(11),d.insertDate,13) as insertDate from documents a, documentsl b, documentsfiles c, files d where a.idDocument = b.idDocument and b.idDocument = c.idDocument and enable = 1 and c.idFile = d.idFile order by insertDate desc

La consulta funciona perfectamente y hace lo que pido.

El problema es que las fechas tienen que estar ordenadas, por lo que ya existe un fallo en la consulta, pues la fecha, en lugar de estar ordenada por fechas, lo hace por orden alfabético :'(. Esto es:

24 Abr 2002
14 Dic 2007
11 Dic 2007
09 Oct 2007
03 Dic 2007
01 Mar 2002

En lugar de:

14 Dic 2007
11 Dic 2007
03 Dic 2007
09 Oct 2007
24 Abr 2002
01 Mar 2002

La duda es ¿hay alguna manera de hacerlo que no sea muy traumática con ese formato? Porque estoy por pedirle a mi jefe de dejarlo en formato 01/12/2007, que ese sí funciona correctamente.

Muchas gracias y un saludo.

Sir Matrix 18/12/2007 06:57

Re: Ordenar fechas ya convertidas
 
Prueba así:

select distinct convert(varchar(11),d.insertDate,13) as FechaInsertada from documents a, documentsl b, documentsfiles c, files d where a.idDocument = b.idDocument and b.idDocument = c.idDocument and enable = 1 and c.idFile = d.idFile order by insertDate desc

saludos

Kurace 19/12/2007 02:09

Re: Ordenar fechas ya convertidas
 
Cita:

Iniciado por Sir Matrix (Mensaje 2221635)
Prueba así:

select distinct convert(varchar(11),d.insertDate,13) as FechaInsertada from documents a, documentsl b, documentsfiles c, files d where a.idDocument = b.idDocument and b.idDocument = c.idDocument and enable = 1 and c.idFile = d.idFile order by insertDate desc

saludos

Muchas gracias, pero así me dice que el nombre insertDate es ambiguo. Así que lo hice de esta forma:

select distinct d.insertDate, convert(varchar(11),d.insertDate,13) as FechaInsertada from documents a, documentsl b, documentsfiles c, files d where a.idDocument = b.idDocument and b.idDocument = c.idDocument and enable = 1 and c.idFile = d.idFile order by d.insertDate desc

Sé que hago un select de dos columnas, la del alias (FechaInsertada) y la real, ya que si no, el order by necesita que el nombre de las columnas esté en la selección.

Saludos y gracias.


La zona horaria es GMT -6. Ahora son las 09:03.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.