【发布时间】:2013-01-30 15:51:26
【问题描述】:
我有一个包含以下字段的表格:
themeID = int(11)
partnerID = int(11)
name = varchar(255)
BeginDate = date (Y-m-d)
EndDate = date (Y-m-d)
active = tinyint(1)
我想选择 BeginDate 在01-30 之前,EndDate 在01-30 之后的主题。
我只想搜索月份和日期,不搜索年份。
我使用以下查询,但没有得到任何回复(0 行):
SELECT
DATE_FORMAT(BeginDate, '%m-%d'),
DATE_FORMAT(EndDate, '%m-%d')
FROM theme
WHERE DATE_FORMAT(BeginDate, '%m-%d') <= '01-30'
AND DATE_FORMAT(EndDate, '%m-%d') > '01-30'
ORDER BY BeginDate
我做错了什么?
PS。有从现在(01-30)开始到现在(01-30)结束的记录
编辑 表数据
Default ...... 2000-01-01 ... 2000-01-01
Oud en Nieuw . 2000-12-26 ... 2000-01-04
Pasen ........ 2000-03-28 ... 2000-04-04
Dierendag..... 2000-10-04 ... 2000-10-04
Sinterklaas .. 2000-11-20 ... 2000-12-05
Kerstmis ..... 2000-12-23 ... 2000-12-26
Winter ....... 2000-12-21 ... 2000-03-20
【问题讨论】:
-
您在这些日期之前和之后有记录吗?
-
我已经测试了查询,没有问题。您可能在数据库表中没有记录
-
您的示例数据中没有从现在开始到现在结束的记录...也许您还需要检查从前一年开始到今年晚些时候结束的记录?
-
@fthiella 当我使用 3 月和 29 日时,我应该返回“Pasen”,对吗?
-
@GertKommer 是的...但它已经有效...sqlfiddle.com/#!2/a36b2/13