在php中搜索并从多个格式日期获取记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在php中搜索并从多个格式日期获取记录相关的知识,希望对你有一定的参考价值。

我在我的数据库表中以不同的格式存储日期,如29-06-1991,29.06.1991,29 / 06/1991。我需要一个搜索查询来获取1991年6月29日的所有日期记录。

$query = JFactory::getDbo()->getQuery(true);
$query->select('*');        
$query->from('#__orders');
$query->where('STR_TO_DATE(orderdateis,'%d-%m/%Y') ='.$db->Quote($rentaldate));
$db->setQuery($query);
答案

我认为引号的问题尝试改变下面的内容

$ query-> where('STR_TO_DATE(orderdateis,'%d-%m /%Y')='。$ db-> Quote($ rentaldate));

$ query-> where(“STR_TO_DATE(orderdateis,'%d-%m /%Y')=”。$ db-> Quote($ rentaldate));

尝试在mysql控制台上执行查询

您可以使用以下API来获取查询转储

echo $ query-> dump(); jexit();

另一答案

由于只有您的分隔符发生变化(不是数字值的顺序),因此您可以非常有效地使用LIKE下划线来标​​记任何角色符合条件的位置。

实际上,您准备php变量以适合查询。 (Demo

$rentaldate = '29.06.1991';
$query->where("orderdateis LIKE " . $db->q(str_replace('.', '_', $rentaldate));

或者你可以保持你的变量不变,并使用更昂贵的REGEXP调用来利用代表“任何角色”的.的“魔力”:(Demo

$rentaldate = '29.06.1991';
$query->where("orderdateis REGEXP " . $db->q($rentaldate))

我推荐第一个。我还应该声明可以使用更多替代技术来完成,但正如我在上一个问题中提到的,您应该始终将日期值存储在日期类型列中以便于处理。

STR_TO_DATE()是一个有用的函数,但不适合您的任务,因为它要求您指定传入的日期格式,以便它可以正确读取字符串。不幸的是,您的日期字符串格式不同。

以上是关于在php中搜索并从多个格式日期获取记录的主要内容,如果未能解决你的问题,请参考以下文章

如何以日期时间格式 PHP 获取当前时间? [复制]

从 tbl1 中获取所有记录并从 tbl2 中获取匹配(或下一个关闭)记录,匹配​​基于 Client# 和从 tbl1 到 tbl2 的日期

超实用的php代码片段

在 PHP/MYSQL 中计算过滤器记录 [重复]

如何搜索两个日期之间的记录。但表日期格式是 varchar

从列表中搜索多个条件的单元格并从列表中返回相应的值