3

我正在尝试获取一个 SQL 查询来选择上个月的所有记录,我有这个从很多地方寻找正是我应该需要的,并且应该可以工作:

SELECT *
FROM orders
WHERE DATEPART(yy,DateOrdered) = DATEPART(yy,DATEADD(m,-1,GETDATE()))
AND DATEPART(m,DateOrdered) = DATEPART(m,DATEADD(m,-1,GETDATE()))

但是我不断收到错误消息:

#1305 - FUNCTION retail.DATEPART does not exist

我正在使用的查询是这里其他答案的逐字逐句,但我收到了这个错误。

谢谢你的帮助-汤姆

4

3 回答 3

6

DATEPART 是一个 Transact-SQL 函数,可用于 Microsoft SQL Server。从问题标签中,我假设您使用 MySQL 作为您的数据库管理系统。

看看MySQL DATEDIFF

于 2013-12-01T21:54:55.957 回答
3

那在mysql中不起作用。要将其转换为 mysql,您可以执行以下操作:

SELECT *
FROM orders
WHERE YEAR(DateOrdered) = YEAR(DATE_SUB(CURDATE(), INTERVAL -1 MONTH))
AND MONTH(DateOrdered) = MONTH(DATE_SUB(CURDATE(), INTERVAL -1 MONTH))

有关 mysql 中可用的日期函数,请参见此处

于 2013-12-01T21:59:23.013 回答
2

它也将起作用。

SELECT * 
FROM orders 
WHERE  MONTH(DateOrdered) = MONTH(CURRENT_DATE() - INTERVAL 1 MONTH) 
AND YEAR(DateOrdered) = YEAR(CURRENT_DATE() - INTERVAL 1 MONTH)
于 2016-02-15T10:33:01.180 回答