Mysql 选择天数小于给定阈值的行

Mysql 选择天数小于给定阈值的行,mysql,sql,Mysql,Sql,我有一个时间戳列。假设我想得到一年中日数小于50的行 其中1月1日=1,12月31日=366 因此,该函数不是特定于年份的,我希望得到所有年份的日范围(例如50到100)之间的结果 范例 时间戳 2012-02-01 2011-02-01 2012-04-01 因此,在DAY

我有一个时间戳列。假设我想得到一年中日数小于50的行

其中1月1日=1,12月31日=366

因此,该函数不是特定于年份的,我希望得到所有年份的日范围(例如50到100)之间的结果

范例

时间戳

2012-02-01 2011-02-01 2012-04-01 因此,在DAY<50的位置检索这些结果将返回结果:1和2,而不是3。

您可以对where子句中的timestamp列使用DAYOFYEAR函数:

由于第50天发生在2月29日之前,因此不会考虑任何闰年因素。

尝试以下方法:

  SELECT * FROM TableA 
  WHERE  DAYOFYEAR(DateCol) < 50 -- for < 50



SELECT * FROM TableA 
WHERE  DAYOFYEAR(DateCol) between 50 and 100 --between a day range e.g. 50 and 100
您可以使用以下选项:

SELECT TO_DAYS(yourdate) - TO_DAYS(CONCAT(YEAR(yourdate), '-01-01'))  + 1

使用函数。呃。。。否。请参见@rs的答案。我不知道DAYOFYEAR函数。
SELECT TO_DAYS(yourdate) - TO_DAYS(CONCAT(YEAR(yourdate), '-01-01'))  + 1