首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在MySQL中比较格式为dd.mm.yyyy的日期(varchar)?

如何在MySQL中比较格式为dd.mm.yyyy的日期(varchar)?
EN

Stack Overflow用户
提问于 2018-06-12 03:48:46
回答 2查看 2.3K关注 0票数 2

我希望能够在日期是dd.mm.yyyy格式的可变字符的MySQL数据库中选择两个日期之间的所有日期。

代码语言:javascript
复制
Database
date (varchar) | value
------------------------
31.01.2018     | 123
------------------------
28.02.2018     | 456

这不起作用

代码语言:javascript
复制
Query
SELECT date,value from Database WHERE date BETWEEN '2018-01-01' AND '2018-01-31'

我知道我可以使用WHERE date LIKE '%.01.2018'整整几个月,但这还不够。

我可以用PHP做这件事,但我不想那样做,因为那会花费太长的时间。我想我可以使用CAST函数,但不确定如何使用。

在MySQL中实现这一点的最佳方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-12 03:50:12

您可以使用STR_TO_DATE()

代码语言:javascript
复制
WHERE STR_TO_DATE(date, '%d.%m.%Y') BETWEEN '2018-01-01' AND '2018-01-31'
票数 3
EN

Stack Overflow用户

发布于 2018-06-12 03:56:02

您可以选择revo的解决方案,也可以选择以下解决方案

代码语言:javascript
复制
SELECT date,value from Database WHERE (not (date is null)) and CHAR_LENGTH(date) = 10 (CONCAT(SUBSTRING(date, 7), '-', SUBSTRING(date, 4, 2), '-', SUBSTRING(date, 1, 2))) BETWEEN '2018-01-01' AND '2018-01-31'

在这里,我们检查date是否不为空以及是否具有所需的长度,这样当您的程序遇到非常规值时,它就不会崩溃。

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

https://stackoverflow.com/questions/50805035

复制
相关文章

相似问题

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