mysql - 如何在 Varchar(10) 格式 mm/dd/yyyy 中使用 between 查询日期范围

标签 mysql date varchar between

我试图只显示“DateDue”在去年的记录。问题是我的日期是 Varchar(10) 的格式,这是因为我的数据按供应商的时间间隔进入我的数据库。显然,使用此查询未正确过滤日期。是否可以将其(暂时用于比较日期范围)转换为用于查询的正确日期数据类型,但不能永久更改该列的类型?

SELECT `DocNum`, `DateDue` 
FROM `prod_po_list` 
WHERE `DateDue` BETWEEN (DATE_FORMAT(curdate( ) - INTERVAL 365 DAY , '%m/%d/%Y' ))
AND DATE_FORMAT( CURDATE( ) , '%m/%d/%Y' )

最佳答案

你在找这样的东西吗?

 SELECT DocNum, DateDue 
 FROM prod_po_list
 WHERE STR_TO_DATE(DateDue, '%m/%d/%Y')
       BETWEEN DATE_SUB(CURDATE(), INTERVAL 365 DAY)
       AND CURDATE()

关于mysql - 如何在 Varchar(10) 格式 mm/dd/yyyy 中使用 between 查询日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16926774/

相关文章:

mysql - 查询同时删除主键和外键

R:您可以为日期时间数据创建自定义层次结构顺序吗?

database - 为什么要为不同类型的字符指定长度

MySQL - 基于将列转换为 NUMERIC 的 JOIN

java - 在两个日期之间迭代并存储它们之间的所有 10 分钟

sql-server - 为什么将文本转换为 varchar 而不指定长度会在 30 个字符处截断文本?

mysql - 如何在 ActiveRecord 模型的属性中存储数组?

Python/MySQL - 通过 Tkinter 将数据插入表中

python - 转义包含在某些 html 标签中的引号

javascript - 将 jQuery 日期与 Rails 日期进行比较