Próbuję:
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;
A.Date wygląda jak: 2010-03-04 00:00:00.000
To jednak nie działa.
Czy ktoś może podać odniesienie do dlaczego?
Próbuję:
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;
A.Date wygląda jak: 2010-03-04 00:00:00.000
To jednak nie działa.
Czy ktoś może podać odniesienie do dlaczego?
Odpowiedzi:
select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
W zapytaniu 2010-4-01jest traktowane jako wyrażenie matematyczne, więc w istocie jest czytane
select *
from dbo.March2010 A
where A.Date >= 2005;
( 2010 minus 4 minus 1 is 2005
Przekształcenie go na właściwy datetimei użycie pojedynczych cudzysłowów rozwiąże ten problem).
Technicznie parser może pozwolić ci na ucieczkę
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
zrobi dla ciebie konwersję, ale moim zdaniem jest mniej czytelny niż jawna konwersja na DateTimeprogramistę konserwacji, który pojawi się po tobie.
SET LANGUAGE FRENCH. :-) Za tę datę otrzymasz 1 stycznia zamiast 1 kwietnia. W przypadku innych dat możesz zamiast tego otrzymać błąd.
CONVERT(datetime, '20100401 10:01:01')- przekazanie 2010-04-01 działa w SQL Server Management Studio, ale nie przy wysyłaniu instrukcji SQL przez PHP / MSSQL.
Spróbuj zawrzeć datę w ciągu znaków.
select *
from dbo.March2010 A
where A.Date >= '2010-04-01';
Możemy również użyć jak poniżej
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';
DateTime start1 = DateTime.Parse(txtDate.Text);
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= start1;
Najpierw przekonwertuj TexBox na Datetime, a następnie ... użyj tej zmiennej do zapytania