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

问题描述 投票:1回答:3
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);

现在我要获取年份是a年的所有行?

python sql sqlite
3个回答
3
投票

使用此查询。 leap年2月有29天。

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

3
投票

我正在使用sqlite3

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

2
投票

令人讨厌的算术:

MySQL:

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

SQLite(标准模运算符):

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

Modulo(%)也适用于MySQL,但我认为显式MOD功能在眼睛上会更容易。

© www.soinside.com 2019 - 2024. All rights reserved.