Eri*_*cis 308 sql sql-server datetime
我尝试着:
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;
Run Code Online (Sandbox Code Playgroud)
A.Date
好像: 2010-03-04 00:00:00.000
但是,这不起作用.
任何人都可以提供参考原因吗?
Dav*_*vid 442
select *
from dbo.March2010 A
where A.Date >= Convert(datetime, '2010-04-01' )
Run Code Online (Sandbox Code Playgroud)
在您的查询中,2010-4-01
被视为数学表达式,因此本质上它是读取的
select *
from dbo.March2010 A
where A.Date >= 2005;
Run Code Online (Sandbox Code Playgroud)
(2010 minus 4 minus 1 is 2005
将其转换为正确的datetime
,并使用单引号将解决此问题.)
从技术上讲,解析器可能允许你逃脱
select *
from dbo.March2010 A
where A.Date >= '2010-04-01'
Run Code Online (Sandbox Code Playgroud)
它将为您进行转换,但在我看来,它明显不如显式转换为DateTime
将在您之后的维护程序员.
Sli*_*SFT 51
尝试将日期括在字符串中.
select *
from dbo.March2010 A
where A.Date >= '2010-04-01';
Run Code Online (Sandbox Code Playgroud)
Md.*_*kot 22
在您的查询中,您没有在日期周围使用单引号。这就是问题所在。但是,您可以使用以下任何查询来比较日期
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= '2010-04-01';
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= CAST('2010-04-01' as Date);
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= Convert(datetime, '2010-04-01' )
Run Code Online (Sandbox Code Playgroud)
dus*_*88c 14
我们也可以使用如下
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';
Run Code Online (Sandbox Code Playgroud)
小智 7
总结一下,正确答案是:
select * from db where Date >= '20100401' (Format of date yyyymmdd)
Run Code Online (Sandbox Code Playgroud)
这将避免其他语言系统的任何问题,并将使用索引。