Mysql和日期函数,它是否对每一行进行处理?

标签 mysql date

我有一个按日期搜索的查询。这是 WHERE 子句:

WHERE DATE_FORMAT(listing.trackdate,'%Y-%m-%d') >= STR_TO_DATE('$search_sdate','%m/%d/%Y')

MySQL 是否必须处理每一行的 date_format 和 str_to_date 才能满足 where 子句?或者有更优化的方法吗?表中的字段是日期时间类型。它的 MySQL 版本为 5.x。 $search_sdate 是从网络表单收到的日期。

编辑: 为了澄清我想比较日期字段的一部分。日期字段类型是日期时间,存储日期加上插入每行的时间。但对于这个特定的 where 子句,我只想比较字段的日期部分。希望这能更好地澄清这一点,对于造成的困惑深表歉意。

最佳答案

如果listing.trackdate一个DATE字段,为什么它需要格式化才能与另一个日期进行比较?看来您正在获取一个日期值并将其转换为字符串,以便您可以将其与已转换为日期的字符串值进行比较。

我希望这种方法的冗余应该是显而易见的。

对于您提出的第一个问题,当然必须对每一行评估DATE_FORMAT(listing.trackdate),因为该字段中的值会发生变化。不过好像是这样的

WHERE listing.trackdate >= STR_TO_DATE('$search_sdate','%m/%d/%Y')

应该足够了,如果trackdate确实是一个DATE字段。

关于Mysql和日期函数,它是否对每一行进行处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5009457/

相关文章:

mysql - 从不同的列和两个表中选择数据

php - 操作字符串 - PHP 或 MySQL

php - 将 DATETIME MySQL 列与 php 年份进行比较

mysql - 将 yymmdd 日期与今天进行比较

从 2 列中搜索 php mysql

php - MySQL 目录树中的唯一文件名

mysql - 具有不同数据的 3 类用户

date - Groovy 无法将字符串解析为日期

php - 从日期获取 PHP 中的月份名称

javascript - 将 PHP 日期格式转换为 Javascript 日期格式的函数(不是日期本身!)