我想获取按日期排序的最后一年的数据记录。但问题是我需要从去年那个月的第一天开始的数据。从整个月份数据库中获取最近一年的数据
例如,如果它的日期为15-June-2016
,那么我需要从1-June-2015
获取数据。
我试着用
SELECT *
FROM Table
WHERE
date >= DATE_SUB(NOW(),INTERVAL 1 YEAR)
ORDER BY date
做,但它不工作。
我想获取按日期排序的最后一年的数据记录。但问题是我需要从去年那个月的第一天开始的数据。从整个月份数据库中获取最近一年的数据
例如,如果它的日期为15-June-2016
,那么我需要从1-June-2015
获取数据。
我试着用
SELECT *
FROM Table
WHERE
date >= DATE_SUB(NOW(),INTERVAL 1 YEAR)
ORDER BY date
做,但它不工作。
为了得到第上年同期的月份,使用方法:
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
参考:
select *
from Table
where date >= DATE_SUB(NOW(),INTERVAL 1 YEAR) order by date asc;
NOW()在SQL Server中无效,也许你正在考虑getdate()? –
@bender我也需要MySql的这个东西。但是,您的解决方案准确提供1年,而不是从第一次约会开始。如果可以,请进一步帮助。 –
@RichBenner在mysql上测试5.6.17工作正常 – Bender
在你使用这个条件。
SELECT * FROM表其中date> DATEADD(年,-1,GETDATE()) - 天(GETDATE())+ 1按日期
感谢
试试这个
SELECT *
FROM Table
WHERE
date >= DATEADD(YEAR,-1,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0))
ORDER BY date
我认为它应该是'... date> = DATEADD(...'包含来自1st的记录。 –
异常 - 调用本地函数时的参数计数不正确' DATEDIFF” –
好。接下来,提供适当的CREATE和INSERT语句,以及期望的结果。 – Strawberry