Я стараюсь:
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;
A.Date
выглядит как: 2010-03-04 00:00:00.000
Однако это не работает.
Кто-нибудь может дать ссылку, почему?
Я стараюсь:
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;
A.Date
выглядит как: 2010-03-04 00:00:00.000
Однако это не работает.
Кто-нибудь может дать ссылку, почему?
Ответы:
select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
В вашем запросе 2010-4-01
рассматривается как математическое выражение, поэтому по сути это читается
select *
from dbo.March2010 A
where A.Date >= 2005;
( 2010 minus 4 minus 1 is 2005
Преобразование в правильное datetime
и использование одинарных кавычек исправит эту проблему.)
Технически, парсер может позволить вам сойти с рук
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
он сделает преобразование за вас, но, по моему мнению, оно менее читабельно, чем явное преобразование в a DateTime
для программиста по обслуживанию, который придет за вами.
SET LANGUAGE FRENCH
. :-) На эту дату вы получите 4 января, а не 1 апреля. В другие дни вы можете получить ошибку.
CONVERT(datetime, '20100401 10:01:01')
- передача 2010-04-01 работает в SQL Server Management Studio, но не при отправке оператора SQL через PHP / MSSQL.
Попробуйте заключить дату в символьную строку.
select *
from dbo.March2010 A
where A.Date >= '2010-04-01';
Мы можем использовать как ниже, а также
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;
Сначала конвертируйте TexBox в Datetime, затем .... используйте эту переменную в Query