我正在努力:
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'
它会为您完成转换,但在我看来,它的可读性不如为您之后的维护程序员显式转换为 DateTime
。
尝试将您的日期包含在字符串中。
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';
综上所述,正确答案是:
select * from db where Date >= '20100401' (Format of date yyyymmdd)
这将避免其他语言系统的任何问题,并将使用索引。
在您的查询中,您没有在日期周围使用单引号。这就是问题所在。但是,您可以使用以下任何查询来比较日期
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' )
DateTime start1 = DateTime.Parse(txtDate.Text);
SELECT *
FROM dbo.March2010 A
WHERE A.Date >= start1;
首先将 TexBox 转换为 Datetime 然后....将该变量用于查询
日期格式对我没有问题(Mydate
的数据类型是 datetime
):
Where Mydate>'10/25/2021'
或 Where Mydate>'2021-10-25'
但如果添加时间,上述答案无效。
这是我的工作:
where cast(Mydate as time)>'22:00:00'
如果您的查询需要日期,请添加日期,例如:
where cast(Mydate as time)>'22:00:00' and Mydate='10/25/2021'
不定期副业成功案例分享
SET LANGUAGE FRENCH
试试你的代码。 :-) 对于该日期,您将获得 1 月 4 日而不是 4 月 1 日。对于其他日期,您可能会收到错误消息。CONVERT(datetime, '20100401 10:01:01')
- 传递 2010-04-01 在 SQL Server Management Studio 中有效,但在通过 PHP/MSSQL 发送 SQL 语句时无效。Convert(datetime, '2010-04-01' )
。如果有人希望在 BigQuery 中执行大于日期的函数,您可以按照以下链接中提到的答案link