2011-02-17 65 views
45

我在查询时遇到问题,或者在寻找正确的功能时发生问题。从一年前到现在选择所有记录

谷歌并没有做太多帮助,所以我就问在这里:

我已经充斥着大量行的表,我需要选择所有小于一岁,直到行现在。

该表(称为orders)的DateTime列的名称为order_date,这是确定何时放置订单的字段。

因此:如何从现在到全年前选择所有具有order_date的记录?

+1

你尝试google搜索 “SQL BETWEEN”?因为不知道SQL基础的人有很多资源。 – dctucker 2014-04-17 17:21:00

回答

128
select * 
from orders 
where order_date >= DATE_SUB(NOW(),INTERVAL 1 YEAR); 
+1

我认为curdate()也可以在NOW()中使用 – Dotnet 2011-02-17 10:33:28

+0

@Dotnet,你好Dotdot,你知道order_date是什么数据类型?它也可以是DATE TIME Field,所以为什么冒险?尽管您将其数据类型更改为DATE TIME,但您不必修改代码。得到? – 2015-04-20 07:31:10

-4

我希望它可以帮助你:

select * 
from table 
where (order_date BETWEEN '2/15/2011 3:36:18 PM' AND '2/17/2011 9:00:00 PM') 
7
SELECT * FROM order WHERE order_date >= curdate() - interval 1 year; 
1

要正月一年前

SELECT DATE_SUB(DATE_FORMAT(CURRENT_DATE,'%Y-%m-01'),INTERVAL 1 YEAR);