在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
下划线来标记任何角色符合条件的位置。
$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中搜索并从多个格式日期获取记录的主要内容,如果未能解决你的问题,请参考以下文章
从 tbl1 中获取所有记录并从 tbl2 中获取匹配(或下一个关闭)记录,匹配基于 Client# 和从 tbl1 到 tbl2 的日期