我正在尝试:
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;
A.Date
看起来像是:2010-03-04 00:00:00.000
但是,这不起作用。
任何人都可以提供原因参考吗?
答案 0 :(得分:400)
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'
它将为您进行转换,但在我看来,它比明确转换为DateTime
的维护程序员的可读性低。
答案 1 :(得分:46)
尝试将日期括在字符串中。
select *
from dbo.March2010 A
where A.Date >= '2010-04-01';
答案 2 :(得分:9)
我们也可以像下面一样使用
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';
答案 3 :(得分:3)
DateTime start1 = DateTime.Parse(txtDate.Text);
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= start1;
首先将TexBox转换为Datetime然后....将该变量用于Query
答案 4 :(得分:0)
总而言之,正确的答案是.....
从db中选择*日期> ='20100401'(日期yyyymmdd的格式)
这将避免其他语言系统出现任何问题,并将使用索引