仅选择where条件中的日期窗体日期时间字段



我已经将这种格式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:它指定我们要转换到的所需字符集。

数据类型:它指定我们想要转换的数据类型。

表达式:它是要转换为另一个特定数据类型的指定值。

最新更新