MySQL Workbench Datetime字段跨日期查询无结果求助
问题分析与解决方案
你的SQL语句无法获取2024-06-17的数据,核心原因是结束条件写错了:DATE_ADD('2024-06-17', interval -1 second) 计算后得到的是 2024-06-16 23:59:59,所有2024-06-17 00:00:00及之后的datetime值都会被排除在外。
下面提供两种可靠的解决方案:
方案一:简洁的日期范围写法(推荐)
直接用小于目标结束日期的下一天,自动包含结束日期当天的所有时间(从00:00:00到23:59:59):
SELECT * FROM mydb_stock.sql_vat WHERE VATtransactn_date >= '2024-06-16' AND VATtransactn_date < '2024-06-18';
方案二:调整秒级计算的结束日期
如果坚持用秒级调整的方式,需要把基准日期改成结束日期的下一天,再减去一秒:
SELECT * FROM mydb_stock.sql_vat WHERE VATtransactn_date >= '2024-06-16' AND VATtransactn_date < DATE_ADD('2024-06-18', INTERVAL -1 SECOND);
两种方案都能正确返回2024-06-16和2024-06-17两天的所有datetime数据,其中方案一逻辑更清晰,也更容易维护。
内容的提问来源于stack exchange,提问作者Kobby Adom
相关产品推荐
相关产品推荐

