Mysql 选择新年12点到2点之间的按月记录
我有这样的记录:Mysql 选择新年12点到2点之间的按月记录,mysql,sql,Mysql,Sql,我有这样的记录: [id | dateofit ] [ 1 | 2017-12-1] 我要使用此查询选择的对象: SELECT id FROM records WHERE MONTH(dateofit) BETWEEN 12 AND 2 问题是12来自2017年和2来自2018年,所以我没有得到任何结果 我试图在第(12)个月和第(1)个月之间像这样替换查询MONTH(dateofit),但仍然存在相同的问题 我要做的是选择记录的月份为[12,1(新年),2(新年)]尝试以下方法: SELE
[id | dateofit ]
[ 1 | 2017-12-1]
我要使用此查询选择的对象:
SELECT id FROM records WHERE MONTH(dateofit) BETWEEN 12 AND 2
问题是12
来自2017年和2
来自2018年,所以我没有得到任何结果
我试图在第(12)个月和第(1)个月之间像这样替换查询MONTH(dateofit)
,但仍然存在相同的问题
我要做的是选择记录的月份为[12,1(新年),2(新年)]尝试以下方法:
SELECT id FROM records
WHERE ( YEAR(dateofit) = 2017 AND MONTH(dateofit) = 12) OR
( YEAR(dateofit) = 2018 AND MONTH(dateofit) IN (1, 2));
试试这个:
SELECT id FROM records
WHERE ( YEAR(dateofit) = 2017 AND MONTH(dateofit) = 12) OR
( YEAR(dateofit) = 2018 AND MONTH(dateofit) IN (1, 2));
为什么不只提供时间范围
SELECT id FROM records WHERE dateofit BETWEEN "2017-12-01 00:00:00" AND "2018-03-01 23:59:59";
为什么不只提供时间范围
SELECT id FROM records WHERE dateofit BETWEEN "2017-12-01 00:00:00" AND "2018-03-01 23:59:59";
这里有两种可能的方法:
如果您只有2017年3月至2018年11月的数据:
SELECT
id
FROM
records
WHERE
MONTH(dateofit) IN (12, 1, 2)
如果您有多年的数据:
SELECT
id
FROM
records
WHERE
dateofit BETWEEN '2017-12-01' AND '2018-02-28'
这里有两种可能的方法:
如果您只有2017年3月至2018年11月的数据:
SELECT
id
FROM
records
WHERE
MONTH(dateofit) IN (12, 1, 2)
如果您有多年的数据:
SELECT
id
FROM
records
WHERE
dateofit BETWEEN '2017-12-01' AND '2018-02-28'
为什么不直接使用dateofit>='2017-12-01'和dataofit<'2018-03-01'
@VamsiPrabhala?您可以将其作为答案发布。也可能是sargable。如果有开始和结束编号(12和2),您如何确定是2017年?@kc2018这就是问题所在,因此我将提供时间戳。在(12,1,2)中使用
如果你不关心年份,为什么不简单地使用dateofit>='2017-12-01'和dataofit<'2018-03-01'
@VamsiPrabhala作为答案。也可能是sargable。如果有开始和结束编号(12和2),您如何确定是2017年?@kc2018这就是问题所在,因此我将提供时间戳。在(12,1,2)中使用
如果您不关心年份。如果我想选择月份介于12
和2
之间的所有记录,而不关心年份,该怎么办?然后在(12,1,2)中使用月份(日期)
如果我想选择月份介于12
和2
之间的所有记录,而不考虑年份,该怎么办?然后在(12,1,2)中使用月份(日期)