我的网站是使用WordPress构建的,我遇到以下情况:
我要查询的表是wp_posts
,要定位的列是post_date
,当时的时间是Datetime
(不是Date
,由于以下原因我无法更改它: WordPress的方便)。
如何触发一个SQL查询,该查询将为我提供有关日历中在特定日期发布的事件的所有详细信息。
我尝试过:
$date = new DateTime(2019-07-03);
$date_format = $date->format("Y-m-d");
$request = $pdo->query("SELECT * FROM posts WHERE post_date = ".$date_format);
$result = $request->fetch()
如果我var_dump()
$dateformat
可以看到数据,但是我的$result
什么也没显示。
然后我得出结论,它永远不会显示任何内容,因为在表中,日期也有时间。
那么,如果我只有年,月,日而不是小时的话,如何获得这些详细信息?
答案 0 :(得分:3)
日期在SQL中被视为字符串。您必须使用引号:
$request = $pdo->query('SELECT * FROM posts WHERE post_date = "'.$date_format .'"');
顺便说一句,是的,如果您有datetime列,则需要使用BETWEEN或简单地以其他方式查询:
$date_format_next = $date->add(1, 'day')->format('Y-m-d');
$request = $pdo->query('SELECT * FROM posts
WHERE post_date >= "'.$date_format .'"'
AND post_date < "'.$date_format_next .'"');
答案 1 :(得分:0)
浏览w3schools之后,我最终得出结论,可以使用sql搜索。
SELECT * FROM `wp_posts` WHERE `post_date` LIKE "%2019-07-03%"
我的查询现在可以使用
答案 2 :(得分:0)
您的列post_date是一个datetime字段,我发现请求的查询只有日期值,因此您可以将该查询用作:
$request =$pdo->query("SELECT * FROM posts WHERE DATE(post_date) = '$date_format'");