2013-04-06 7 views
0

Je voulais obtenir la plus petite date et la plus grande date stockées dans la base de données.numéro de date le plus petit et le plus grand

Pour que j'utilisé requête suivante:

select min(sauda_date) as MinDate,max(sauda_date) as MaxDate from tradefile 

et je me suis le résultat suivant:

enter image description here

Mais je sais que ce résultat est faux.

Il devrait être:

28 Feb 2013 MinDate et 22 mars 2013 comme MaxDate.

En raison de cette i Référé question suivante:

SQL grammar for SELECT MIN(DATE)

et a changé ma requête:

select min(sauda_date), max(sauda_date) from tradefile group by sauda_date 

mais je m'y suis résultat suivant:

enter image description here

Bien que mon résultat devrait être:

28 Feb 2013 MinDate et 22 mars 2013 comme MaxDate.

a également essayé avec cette requête:

select min(convert(datetime,sauda_date)), max(convert(datetime,sauda_date)) from tradefile group by convert(datetime,sauda_date) 

mais on m'a donné aucun résultat [attendu]

Où suis-je faire erreur.? Aidez-moi, s'il vous plaît.

Remarque: Sauda_Date est de type nvarchar ici.

Répondre

1

"Remarque: Sauda_Date est de type nvarchar ici."

Il y a votre problème, alors - si vous sélectionnez le type min ou max d'un type nvarchar, alors SQL utilise le tri lexicographique - comme dans 0 à 9, a à z. Quoi d'autre pourrait-il utiliser? Comment pourrait-il savoir que vous voulez qu'ils soient interprétés comme datetime?

Si vous ne pouvez pas modifier le schéma et définir les dates de la colonne, vous pouvez convertir/convertir le type de données en datetime avant d'utiliser min() ou max().

Donc, vous voulez quelque chose comme

select min(convert(datetime,sauda_date)), max(convert(datetime,sauda_date)) from tradefile

+0

mais j'ai aussi utilisé convert (datetime, ..) fonction sur elle .. (comme ma question Edited). .mais toujours pas l'obtenir – Freelancer

+0

oui, votre requête a travaillé :) merci beaucoup. – Freelancer

+0

@Freelancer Le groupe par était en train de gâcher votre requête, le reste était ok – Patashu

1

Essayez ceci:

select 
    min(CAST(sauda_date AS DATETIME)) as MinDate, 
    max(CAST(sauda_date AS DATETIME)) as MaxDate 
from tradefile 
+0

ouais, cela a également fonctionné. Merci – Freelancer

Questions connexes