gpt4 book ai didi

PHP SQL AJAX 获取特定日期时间之前的数据

转载 作者:行者123 更新时间:2023-11-29 21:26:02 24 4
gpt4 key购买 nike

我正在比较 SQL 语句中的两个日期时间。这是用 PHP 完成的。

$result=mysqli_query($con,"SELECT 
*
FROM
join
WHERE
join_date <= '$last_join_dates'
ORDER BY
join_date DESC LIMIT 3 OFFSET 3");

$last_join_dates 每次都会更新,因此我使用偏移量来不断提取新数据。但是,比较日期实际上不起作用。

数据库内部:结构join_date看起来像2015-10-24 13:30:22,它是一个日期时间类型。

$last_join_dates我使用的是完全相同的格式2015-10-26 08:23:22

因为这不起作用..我尝试了以下方法来转换它们。

尝试了 FORMAT() 日期时间,但不起作用:

$result=mysqli_query($con,"SELECT 
*
FROM
join
WHERE
FORMAT(join_date, 'yyyyMMddhhmmss') <= FORMAT($last_join_dates, 'yyyyMMddhhmmss')
ORDER BY
join_date DESC LIMIT 3 OFFSET 3");

尝试了 Convert() 日期时间,但似乎也不起作用:

$result=mysqli_query($con,"SELECT 
*
FROM
join
WHERE
REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), CONVERT(DATETIME, join_date, 112), 126), '-', ''), 'T', ''), ':', '') <= REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), CONVERT(DATETIME, $last_join_dates, 112), 126), '-', ''), 'T', ''), ':', '')
ORDER BY
join_date DESC LIMIT 3 OFFSET 3");

我不知道如何调试这个..有什么建议吗?

最佳答案

#1,JOIN 是一个 mysql 关键字,因此您需要在它周围加上反引号,或者最好将您的表命名为其他名称

#2,这不是它不起作用的原因,但你永远不应该使用这样的字符串插值,它很容易受到 SQL 注入(inject)的攻击。而是使用 $last_join_date 作为绑定(bind)变量:Bind variables in a mysql_query statement

The SQL you have above is correct, as seen below:

mysql> select * from test order by the_date;
+----+---------------------+
| id | the_date |
+----+---------------------+
| 1 | 2015-01-02 11:23:21 |
| 2 | 2015-01-03 12:23:21 |
| 3 | 2015-02-03 12:25:21 |
| 4 | 2015-02-05 12:25:21 |
| 5 | 2015-02-05 15:25:21 |
| 6 | 2015-02-05 15:37:21 |
| 7 | 2015-02-05 20:37:21 |
| 8 | 2015-02-05 20:37:40 |
| 9 | 2015-03-05 20:37:40 |
| 10 | 2015-03-06 20:37:40 |
+----+---------------------+
10 rows in set (0.00 sec)

mysql> select * from test where the_date <= '2015-02-10 01:12:24' order by the_date desc limit 3, 3;
+----+---------------------+
| id | the_date |
+----+---------------------+
| 5 | 2015-02-05 15:25:21 |
| 4 | 2015-02-05 12:25:21 |
| 3 | 2015-02-03 12:25:21 |
+----+---------------------+
3 rows in set (0.00 sec)

因此,请尝试将表命名为其他名称或使用反引号“`”。还可以尝试从 mysql 命令行运行查询。也许您拥有的数据不是您想象的那样,但查询工作正常。

关于PHP SQL AJAX 获取特定日期时间之前的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35511915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com