2016-06-15 56 views
0

我想获取按日期排序的最后一年的数据记录。但问题是我需要从去年那个月的第一天开始的数据。从整个月份数据库中获取最近一年的数据

例如,如果它的日期为15-June-2016,那么我需要从1-June-2015获取数据。

我试着用

SELECT * 
FROM Table 
WHERE 
    date >= DATE_SUB(NOW(),INTERVAL 1 YEAR) 
ORDER BY date 

做,但它不工作。

+1

好。接下来,提供适当的CREATE和INSERT语句,以及期望的结果。 – Strawberry

回答

1

为了得到第上年同期的月份,使用方法:

DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101')) 

您的查询应该是:

SELECT * 
FROM TABLE 
WHERE 
    date > DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101')) 
ORDER BY date 

参考:

1
select * 
from Table 
where date >= DATE_SUB(NOW(),INTERVAL 1 YEAR) order by date asc; 
+0

NOW()在SQL Server中无效,也许你正在考虑getdate()? –

+0

@bender我也需要MySql的这个东西。但是,您的解决方案准确提供1年,而不是从第一次约会开始。如果可以,请进一步帮助。 –

+0

@RichBenner在mysql上测试5.6.17工作正常 – Bender

0

在你使用这个条件。

SELECT * FROM表其中date> DATEADD(年,-1,GETDATE()) - 天(GETDATE())+ 1按日期

感谢

2

试试这个

SELECT * 
FROM Table 
WHERE 
    date >= DATEADD(YEAR,-1,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0)) 
ORDER BY date 
+0

我认为它应该是'... date> = DATEADD(...'包含来自1st的记录。 –

+0

异常 - 调用本地函数时的参数计数不正确' DATEDIFF” –

相关问题