如何比较日期(年、月)和日期(日、月、年)
Posted
技术标签:
【中文标题】如何比较日期(年、月)和日期(日、月、年)【英文标题】:How to compare date(year, month) with date(day, month, year) 【发布时间】:2016-05-19 02:03:12 【问题描述】:我有一个 sql 命令,我想检查日期(年、月)是否在日期(日、月、年)和日期(日、月、年)之间。以下是我的 SQL 命令:
SELECT *
FROM paytran
WHERE
(StaffID BETWEEN '01' AND '01')
AND STR_TO_DATE('01/04/2016', '%d/%m/%Y') BETWEEN STR_TO_DATE(DateFrom, '%d/%m/%Y') AND STR_TO_DATE(DateTo, '%d/%m/%Y')
AND SubGroup = '1'
AND Week1 = '1'
AND PaymentMonth = STR_TO_DATE('2016/04', '%Y%m') BETWEEN STR_TO_DATE('01/03/2016', '%d/%m/%Y') AND STR_TO_DATE('31/12/2016', '%d/%m/%Y')
AND FO = 'F'
mysql 没有给出错误,但结果不应为空。
【问题讨论】:
你确定SubGroup = '
'` 不是错字吗?
是的,这是一个错字。哈哈,感谢您的编辑。我已经更改了 SubGroup 值
【参考方案1】:
SELECT * FROM TABLE_NAME
WHERE DATE_FORMAT(date, "%Y-%m") BETWEEN '2013-01' AND '2014-12';
https://***.com/a/17541196/3155780
【讨论】:
【参考方案2】:嗯,这个版本似乎更简单:
SELECT *
FROM paytran
WHERE StaffID LIKE '01%' AND
'2016-04-01' BETWEEN DateFrom AND DateTo AND
SubGroup = '1' AND
Week1 = '1' AND
DATE_FORMAT(PaymentMonth, '%Y%m') BETWEEN '201604' and '201612' AND
FO = 'F';
一般来说,您不需要将日期转换为字符串进行比较。如果需要日期,则会自动转换格式为 YYYY-MM-DD 的字符串。
【讨论】:
但是 201604 和 201612 实际上是基于数据库列,而 201604 实际上是 01/03/2016 而 201612 实际上是 31/12/2016。该命令也仍然无法正常工作。呵呵 @JohnsYong 。 . .他们不在你的问题中。当然,如果你喜欢在数据库列上,你仍然可以使用date_format()
。
无论如何,非常感谢您的帮助。非常感谢以上是关于如何比较日期(年、月)和日期(日、月、年)的主要内容,如果未能解决你的问题,请参考以下文章