我已经将这种格式2022-02-06 18:40:00存储在我的trans_reminder_date中。我只想在where条件下使用日期,但在这种情况下,我无法获取数据
$today = date('Y-m-d');
SELECT * FROM sales_detail
WHERE trans_reminder_date = '".$today."'
AND trans_reminder_date != ''
ORDER BY sales_detail_id DESC";
如果过滤器参数是字符串:
select * from sales_detail
where cast(trans_reminder_date as date) = cast('2020-03-22' as date)
如果你想使用当前日期进行过滤,那么MySQL有一个只获取当前日期而不获取时间的功能。
select * from sales_detail
where cast(trans_reminder_date as date) = curdate()
在MySQL上,为了将其他类型转换为另一种类型,可以使用cast
p.S。从MySQL 8.0.13开始,我们现在有了创建函数索引的最简单方法。当您使用cast(updated_at as date)
时,DB将不使用列updated_at
的索引。您必须创建一个函数索引才能获得最佳性能。
下面的查询将为您提供当前日期的所有结果。通过这样做,就不需要铸造价值观了。
SELECT
*
FROM
sales_detail
WHERE
trans_reminder_date >= curdate()
AND trans_reminder_date < curdate() + INTERVAL '1' DAY
ORDER BY
sales_detail_id DESC;
使用Cast函数将日期时间类型更改为日期示例
Cast(column_name as date)
或者您使用转换功能将日期时间类型更改为日期
CONVERT(column_name, date);
CONVERT(expression, datatype);
OR,
CONVERT(expression USING character_set);
character_set:它指定我们要转换到的所需字符集。
数据类型:它指定我们想要转换的数据类型。
表达式:它是要转换为另一个特定数据类型的指定值。