首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MySQL中指定请求中的日期范围

在MySQL中指定请求中的日期范围
EN

Stack Overflow用户
提问于 2019-06-30 19:01:22
回答 3查看 54关注 0票数 0

我有一张表,里面有一些贸易商品和物流方面的信息。它有一个名为‘到货日期’的列,其中包含类似于"30.06.2019“格式的到达日期。

现在我需要输入一个请求,它只显示尚未到达的商品,换句话说,到达日期> 30.06.2019。所以我输入了我的请求

代码语言:javascript
运行
复制
SELECT *
FROM traffic
WHERE arriving_date > '30.06.2019'

但是这个请求只显示了空白字段。我想我已经猜到原因了。显然,它不能以这样的格式比较数字。但我不确定我应该如何让它比较日期。感谢您的帮助。

EN

回答 3

Stack Overflow用户

发布于 2019-06-30 19:23:08

假设arriving_date只是一个字符串(而不是实际的日期)

代码语言:javascript
运行
复制
SELECT *
  FROM traffic
 WHERE str_to_date(arriving_date, '%d.%m.%Y') > now()
    OR arriving_date is null;

这会将arriving_date字符串转换为日期,并将其与当前日期和时间进行比较。

我还添加了arriving_date为空(即未设置)的检查,以防它是在到达时设置的。

请注意,对列中的值使用函数会使所有查询运行全表扫描。这是没有办法的,因为你的日期格式是这样的。

票数 1
EN

Stack Overflow用户

发布于 2019-06-30 21:00:33

感谢大家的帮助!

我设法这样解决我的问题: 1.我将日期数据类型更改为‘arriving_date’(它是整数) 2.我将日期从格式'dd.mm.yyyy‘重写为'yyyy-mm-dd',不确定这是否重要。3.最终请求如下所示:

代码语言:javascript
运行
复制
SELECT *
FROM traffic
WHERE arriving_date > NOW()

它现在可以完美地工作了。

票数 1
EN

Stack Overflow用户

发布于 2019-06-30 19:09:19

假设arriving_date列是porper数据类型,请尝试将日期字符串转换为适当的日期

代码语言:javascript
运行
复制
    SELECT *
    FROM traffic
    WHERE arriving_date > str_to_date('30.06.2019', '%d.%m.%Y') 

或者如果两个日期都是

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56824319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档