简体   繁体   English

如何使用sql查询获取表中存在的所有行,其中年份是闰年

[英]how to get all the rows present in table using sql query where year is a leap year

CREATE TABLE Movie (
MovieID int PRIMARY KEY,
year int,
rank int);

INSERT INTO Movie (MovieID, year, rank, ...)
VALUES (1, 1888, 4)
VALUES (2, 1889, 4)
VALUES (3, 1890, 5)
VALUES (4, 1900, 3)
VALUES (5, 1905, 4)
VALUES (6, 1947, 2)
VALUES (7, 1976, 1)
VALUES (8, 2000, 4);

now i want to fetch all the row where year is a leap year?现在我想获取所有年份是闰年的行?

Use this query.使用此查询。 A leap year feb month has 29 days.闰年二月有 29 天。

select * 
from Movie where DAY(EOMONTH(DATEADD(DAY,31,DATEADD(YEAR,@YEAR-1900,0)))) = 29

我正在使用 sqlite3

WHERE strftime('%d', year || '-03-01', '-1 day') = '29'

Boring arithmetic:无聊的算术:

MySQL: MySQL:

SELECT *
WHERE MOD(`year`,4) = 0 AND MOD(`year`, 100) != 0 OR MOD(`year`, 400) = 0

SQLite (standard modulo operator): SQLite(标准模运算符):

SELECT *
WHERE year % 4 = 0 AND year %100 != 0 OR `year`% 400 = 0

Modulo ( % ) would've worked for MySQL as well, but I thought that explicit MOD function would be easier on eyes. Modulo ( % ) 也适用于 MySQL,但我认为显式 MOD 函数会更容易看到。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM