gpt4 book ai didi

MySQL BETWEEN 用于保存为字符串的日期

转载 作者:行者123 更新时间:2023-11-29 12:51:52 25 4
gpt4 key购买 nike

事情是这样的 - 我将日期作为字符串以 dd/mm/yyyy 格式保存在数据库中。我想获取日期介于两个日期之间的行 - 比如说 11/07/2009 和 29/08/2014,该怎么做?

我试过了

SELECT * FROM attr WHERE time_added between '11/7/2009' AND '29/8/2014' 

但它无法正常工作。任何伟大的都会很棒吗?

最佳答案

首先,日期推荐使用MySQL的DATE类型,选择日期范围会简单高效。但是,如果您有自己的理由使用字符串类型(例如您正在使用特定的日历并且没有转换器),那么您应该考虑以下内容:

  • 为了选择范围,您应该保存日期,例如 yyyy/mm/dd,特别是当您在此字段上放置索引时,性能会很高。
  • 您不需要在数据库中保存像“/”这样的格式包租人。您可以稍后格式化输出并以您想要的任何顺序和格式显示日期。

因此,我为您提供以下解决方案:

使用 YYYYMMDD 格式保存日期。选择查询将类似于:

SELECT *, DATE_FORMAT(time_added, '%d/%m/%Y') AS time_added2 FROM attr 
WHERE time_added between '20090711' AND '20140829';

如果您无法更改数据库,则以下查询将在现有数据库上运行(日期以 dd/mm/yyyy 格式保存):

SELECT * FROM attr WHERE 
CONCAT(SUBSTR(time_added, 7, 4), SUBSTR(time_added, 4, 2), SUBSTR(time_added, 1, 2))
BETWEEN '20090711' AND '20140829';

关于MySQL BETWEEN 用于保存为字符串的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24600537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com