Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询选择过去某一天?_Mysql_Sql_Joomla - Fatal编程技术网

MySQL查询选择过去某一天?

MySQL查询选择过去某一天?,mysql,sql,joomla,Mysql,Sql,Joomla,我有一个joomla网站,我想做一个查询,它可以每天运行一个cronjob。它将查找任何30天以前的文章,并在特定日期删除这些文章 我可以这样做一个简单的查询: SELECT * FROM `ibps6_content` WHERE created > '2013-10-16' AND created < '2013-10-16' 从“ibps6”内容中选择*` 创建地点>'2013-10-16'和创建地点

我有一个joomla网站,我想做一个查询,它可以每天运行一个cronjob。它将查找任何30天以前的文章,并在特定日期删除这些文章

我可以这样做一个简单的查询:

SELECT * FROM  `ibps6_content`
    WHERE created > '2013-10-16' AND created < '2013-10-16'
从“ibps6”内容中选择*`
创建地点>'2013-10-16'和创建地点<'2013-10-16'
但是我不知道如何让它指定最后30天,而不是硬编码日期。

哪个rdbms? 在oracle中,您可以使用基于表示当前日期/时间的sysdate的select

例如:


select*from ibps6\u content在T-SQL中的sysdate-30和sysdate之间创建,您可以使用以下内容:

SELECT
    *
FROM
    ibps6_content
WHERE
    created BETWEEN DATEADD(DAY, -30, GETDATE()) AND GETDATE()
请注意,这将为您提供在运行文章的特定时间之前编写的文章。要删除时间并仅使用日期,您可以使用:

DECLARE @CurDate DATETIME;
SET @CurDate = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()));

SELECT
    *
FROM
    ibps6_content
WHERE
    created BETWEEN DATEADD(DAY, -30, @CurDate) AND @CurDate
您需要mysql函数

请尝试将查询设置为:

DELETE FROM `ibps6_content` WHERE created > DATE_FORMAT(NOW() - INTERVAL 1 MONTH, '%Y-%m-%d');

如果创建的是表中的日期数据类型,希望这有帮助

DELETE FROM ibps6_content WHERE created = CURRENT_DATE -INTERVAL 30 DAY

如果是datetime use DATE(created)

您正在使用哪个数据库管理系统?博士后?甲骨文?这可以正常工作,但会删除过去30天内的所有文章。如何删除我在30天前创建的文章,仅此特定日期?您只需将
替换为
=
。如果可以使用日期数据类型,请不要使用dateformat。