web-dev-qa-db-fra.com

Comment interroger toutes les dates supérieures à une certaine date dans SQL Server?

J'essaie:

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;

A.Date ressemble à: 2010-03-04 00:00:00.000

Cependant, cela ne fonctionne pas.

Quelqu'un peut-il fournir une référence pour pourquoi?

287
Eric Francis
select *  
from dbo.March2010 A 
where A.Date >= Convert(datetime, '2010-04-01' )

Dans votre requête, 2010-4-01 est traité comme une expression mathématique, il est donc essentiellement lu

select *  
from dbo.March2010 A 
where A.Date >= 2005; 

(2010 minus 4 minus 1 is 2005 le convertir en un datetime correct et l’utilisation de guillemets simples résoudra ce problème.)

Techniquement, l'analyseur peut vous permettre de vous en sortir

select *  
from dbo.March2010 A 
where A.Date >= '2010-04-01'

la conversion sera faite pour vous, mais à mon avis, elle est moins lisible que la conversion explicite en DateTime pour le programmeur de maintenance qui viendra après vous.

415
David

Essayez de placer votre date dans une chaîne de caractères.

 select * 
 from dbo.March2010 A
 where A.Date >= '2010-04-01';
49

Nous pouvons utiliser comme ci-dessous aussi

SELECT * 
FROM dbo.March2010 A
WHERE CAST(A.Date AS Date) >= '2017-03-22';

SELECT * 
    FROM dbo.March2010 A
    WHERE CAST(A.Date AS Datetime) >= '2017-03-22 06:49:53.840';
11
dush88c
DateTime start1 = DateTime.Parse(txtDate.Text);

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= start1;

Commencez par convertir TexBox en date et heure puis .... utilisez cette variable dans la requête

3
Suresh Parmar

Pour résumer, la bonne réponse est .....

sélectionnez * à partir de la base de données où Date> = '20100401' (Format de la date aaaaamjjj)

Cela évitera tout problème avec d’autres systèmes linguistiques et utilisera l’index.

0
Dan