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?
sql
sql-server
datetime
Eric Francis
źródło
źródło
Odpowiedzi:
W zapytaniu
2010-4-01
jest traktowane jako wyrażenie matematyczne, więc w istocie jest czytane(
2010 minus 4 minus 1 is 2005
Przekształcenie go na właściwydatetime
i użycie pojedynczych cudzysłowów rozwiąże ten problem).Technicznie parser może pozwolić ci na ucieczkę
zrobi dla ciebie konwersję, ale moim zdaniem jest mniej czytelny niż jawna konwersja na
DateTime
programistę konserwacji, który pojawi się po tobie.źródło
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.
źródło
Możemy również użyć jak poniżej
źródło
Najpierw przekonwertuj TexBox na Datetime, a następnie ... użyj tej zmiennej do zapytania
źródło
Podsumowując, prawidłowa odpowiedź to:
Pozwoli to uniknąć problemów z innymi systemami językowymi i użyje indeksu.
źródło