Ik probeer:
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;
A.Date
ziet er als volgt uit: 2010-03-04 00:00:00.000
Dit werkt echter niet.
Kan iemand een referentie geven waarom?
Antwoord 1, autoriteit 100%
select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
In uw zoekopdracht wordt 2010-4-01
behandeld als een wiskundige uitdrukking, dus in wezen luidt het
select *
from dbo.March2010 A
where A.Date >= 2005;
(2010 minus 4 minus 1 is 2005
Het omzetten naar een juiste DateTime
en het gebruik van enkele aanhalingstekens lost dit probleem op.)
Technisch gezien kunt u met de parser wegkomen
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
het zal de conversie voor u doen, maar naar mijn mening is het minder leesbaar dan expliciet converteren naar een DateTime
voor de onderhoudsprogrammeur die na u komt.
Antwoord 2, autoriteit 12%
Probeer je date in een tekenreeks te plaatsen.
select *
from dbo.March2010 A
where A.Date >= '2010-04-01';
Antwoord 3, autoriteit 3%
We kunnen ook gebruiken zoals hieronder
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';
Antwoord 4
Om het allemaal samen te vatten, het juiste antwoord is:
select * from db where Date >= '20100401' (Format of date yyyymmdd)
Dit voorkomt problemen met andere taalsystemen en gebruikt de index.
Antwoord 5
DateTime start1 = DateTime.Parse(txtDate.Text);
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= start1;
Eerst TexBox converteren naar Datetime en dan….gebruik die variabele in de Query