Tim*_*urn 20 php mysql intervals
我完全被这个问题困住了,几个小时都在努力,但没有成功,希望有人可以提供帮助.尝试构建一个每天运行的cron脚本,返回比当前日期早7天的行.
问题是,我的查询没有返回任何内容.没有错误消息,没有(我知道过去7天数据库中有条目 - 我们每天大约有7000个条目,所以它们就在那里!)我尝试了SELECT*并在编辑日期成功回应,除了我的SQL脚本,一切正常.
我正在引用的列(edit_date)是使用Ymd hms格式化的'datetime'类型.此列始终在创建和编辑时分配了日期时间值.
function get_ad_sql($table){
$sql = "SELECT
*
FROM
".$table."
WHERE
edit_date = DATE_SUB(NOW(), INTERVAL 7 DAY)
";
return $sql;
}
Run Code Online (Sandbox Code Playgroud)
并调用该函数并"尝试"回显primary_key:
$sqlAng = get_ad_sql('angebote');
$result = mysql_query($sqlAng);
while($row = mysql_fetch_array($result)){
echo $row['primary_key'];
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了DATE_SUB(NOW(),INTERVAL 7 DAY)的每个变体,包括CURDATE(),DATE_FORMAT(edit_date,'%m /%d /%Y'),我可以在这里和网上找到,但是不能'得到任何工作.希望可以有人帮帮我!
Gha*_*Mir 32
获得相同的日期时间条目非常罕见,日期和时间最多可达到秒.因此,为了获得适当的结果,我们需要忽略时间部分,并使用CURDATE()函数来处理日期部分.
您可以忽略时间部分,并使用以下日期与日期进行比较:
function get_ad_sql($table){
$sql = "SELECT
*
FROM
".$table."
WHERE
DATE(edit_date) = DATE_SUB(CURDATE(), INTERVAL 7 DAY)
";
return $sql;
}
Run Code Online (Sandbox Code Playgroud)
NOW()返回DATETIME值,您应该使用DATE函数获取没有时间的日期,例如-
SELECT * FROM table WHERE edit_date = DATE_SUB(DATE(NOW()), INTERVAL 7 DAY);
Run Code Online (Sandbox Code Playgroud)
如果edit_date字段类型为DATETIME,则此字段也应由DATE()函数包装-
SELECT * FROM table WHERE DATE(edit_date) = DATE_SUB(DATE(NOW()), INTERVAL 7 DAY);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49366 次 |
| 最近记录: |