我有这个查询来显示基于日期的记录
Select *
From orders
Where CONVERT(VARCHAR(50), Orderdate, 101) = CONVERT(VARCHAR(50),'1/21/2010', 101)
虽然今天有订单,但查询失败,因为传递的日期不是01/21/2010 如何在查询中解决此问题,因为如果日期和月份小于10,则其他应用程序传递的日期为m / d / yyyy
答案 0 :(得分:2)
为简单起见,请避免使用转换功能,直到您必须将其显示到屏幕并使用ANSI标准的“YYYY-MM-DD HH:MM:SS”格式作为日期时间。
SELECT *
FROM orders
WHERE Orderdate = '2010-01-21 00:00:00'
答案 1 :(得分:0)
不要将日期转换为字符串,在它们仍然是datetime数据类型时进行比较。如果您想在比较时忽略一天中的时间,则应将两者都转换为当天的00:00:00:
FLOOR(CONVERT(float, OrderDate)) = FLOOR(CONVERT(float, CONVERT(DateTime, '1/21/2010')))
答案 2 :(得分:0)
我强烈建议你开始使用Sql Server的通用格式来避免root的问题,并获得清晰的代码:)
试试这个:
Select *
From orders
Where Orderdate = '20100121'
格式始终为yyyyMMdd
干杯
答案 3 :(得分:0)
Orders.Orderdate的数据类型是什么?该列的值是多少?一旦我们有了这个,我们就可以为您的问题提供解决方案。
答案 4 :(得分:-1)
试试这个:
SELECT * FROM orders where CONVERT(VARCHAR(50),Orderdate,101) = CONVERT(varchar(50), CONVERT(datetime,'1/21/2010'),101)
这假设orderdate是日期时间。