SQL Server日期格式问题

时间:2010-01-21 20:49:07

标签: sql sql-server sql-server-2005

我有这个查询来显示基于日期的记录

Select * 
  From orders 
 Where CONVERT(VARCHAR(50), Orderdate, 101) = CONVERT(VARCHAR(50),'1/21/2010', 101) 

虽然今天有订单,但查询失败,因为传递的日期不是01/21/2010 如何在查询中解决此问题,因为如果日期和月份小于10,则其他应用程序传递的日期为m / d / yyyy

5 个答案:

答案 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是日期时间。