2009-12-17 3 views
-1
SELECT [NEXT_UPDATE_TIME] 
FROM [BGREX_UpdateQueue] 
WHERE [NEXT_UPDATE_TIME] < 18/12/2009 

Je veux sélectionner ces dates à partir des enregistrements où la valeur de date-heure dans la colonne est inférieure à une date-heure, nous devons comparer. J'ai plusieurs lass de valeur que "18/12/2009", mais aucune ligne n'est retournée.Sélectionnez les données datetime de SQL Server colonne

syntaxe suivante ne fonctionne pas non plus

SELECT 18/12/2009 // returns 0 
WHERE [NEXT_UPDATE_TIME] < '18/12/2009'; // The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. 

Quelle est la bonne syntaxe pour passer '18/12/2009' ou une autre date? grâce

+4

Si vous laissez les guillemets, vous vous demandez SQL pour calculer 18/12/2009 (qui est 7.4664011946241911398705823792932e-4), casting cela à un nombre entier et vous obtenez 0. Merci pour le vote vers le bas, btw. – Rory

+1

Pourquoi les gens ne justifient-ils pas les votes négatifs? nous pouvons en apprendre davantage sur nos erreurs si on nous l'a déjà dit –

Répondre

3

Essayez:

select next_update_time from bgrex_updatequeue 
    where next_update_time < '2009-12-18'; 
+0

, cela donne cette erreur --- La conversion d'un type de données char en un type de données datetime a abouti à une valeur de date-heure hors-plage. –

+2

Non, vous avez essayé '18/12/2009 '. '2009-12-18' est une expression entièrement différente, et une qui devrait se convertir correctement. –

+0

Merci mon ami, était de ma faute, fonctionne bien –

0

Cela devrait fonctionner:

SELECT [NEXT_UPDATE_TIME] 
FROM [BGREX_UpdateQueue] 
WHERE [NEXT_UPDATE_TIME] < '2009-12-18' 

Par la façon dont vous obtenez l'erreur The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. en raison du format de la date, si vous essayez 12/18/2009, il devrait fonctionner aussi , mais la requête ci-dessus est la meilleure que je pense.

-1

DATEDIFF est votre ami dans ce cas.

+0

Je ne me dérange pas un vote vers le bas, mais vous voudrez peut-être me faire savoir ce que je me suis trompé. Je suis toujours heureux d'apprendre plus quand je me trompe. –

0

Si vous utilisez un DataView, il peut être accompli faire facilement ce (par exemple entre les dates):

myDataView = new DataView(myDataSet.Tables["TABLE"], "TIMESTAMP >= '" + Convert.ToDateTime(fromDate) + "' AND TIMESTAMP <= '" + Convert.ToDateTime(toDate) + "'", "TIMESTAMP", DataViewRowState.CurrentRows); 

toDate et fromDate sont de type string

Il y a aussi un article sur Working with SQL Server Date/Time Variables: Part Three - Searching for Particular Date Values and Ranges

-2

la requête dans votre exemple est manquante entre guillemets la date, il devrait être:

SELECT [NEXT_UPDATE_TIME] 
FROM [BGREX_UpdateQueue] 
WHERE [NEXT_UPDATE_TIME] < '18/12/2009' 
+0

même que @ angry jim –

+0

@asdi: alors utilisez un format de date que votre serveur attend, 'jj MMM aaaa' fonctionne toujours ('18 Dec 2009 ') – Rory

+0

merci c'était supposé être' 2009-12-18 ' –

Questions connexes