MySQL中选择闰年的查询条件
我的表中有一个年份列,我需要在MySQL中找到闰年的年份。表名为“Movie”,其中有一个特定的年份和标题列。如何在SQL查询中查找闰年电影 我写了上面的问题,但在我的回答中得到了“2009年”MySQL中选择闰年的查询条件,mysql,sql,leap-year,Mysql,Sql,Leap Year,我的表中有一个年份列,我需要在MySQL中找到闰年的年份。表名为“Movie”,其中有一个特定的年份和标题列。如何在SQL查询中查找闰年电影 我写了上面的问题,但在我的回答中得到了“2009年” SELECT year, title from Movie where year%4=0 AND (year%100!=0 OR year%400=0) 数据的标题如下所示: title Year 0 The Avengers
SELECT year, title from Movie where year%4=0 AND (year%100!=0 OR year%400=0)
数据的标题如下所示:
title Year
0 The Avengers 2012
1 Captain America: Civil War 2016
2 Lion 2016
3 Slumdog Millionaire 2008
4 2012 I 2009
在有电影的所有年份,这就足够了:
where year % 4 = 0
更精确的表达式是:
where (year % 4 = 0 and year % 100 <> 0) or
(year % 400 = 0)
其中(年份%4=0和年份%100 0)或
(年份%400=0)
中的不适用于这种情况
SELECT @year,
DAY(CONCAT(@year, '-03-01') - INTERVAL 1 DAY) = 29 AS is_leap;
或
相应地
SELECT year, title
FROM Movie
WHERE DAY(CONCAT(year, '-03-01') - INTERVAL 1 DAY) = 29
或
年份列的数据类型是否为字符类型?
通过使用ceil和cast函数,它检查它是否为数字格式
SELECT year, title from Movie where year%4=0 AND (year%100!=0 OR year%400=0) AND year=cast(ceil(year) as char);
4 2012年至2009年
这可能是一个应用程序问题。
如果符合闰年条件的“2012”数据在年份列中,且标题列的数据为空,则标题列未对齐,年份列输出与之类似。
如果出现上述情况,我认为“I”指的是范围外的区域,是不正确的数据输出。如何删除这些值。表(1)中有一些错误的数据输入,为什么将年份存储为字符串?(2) 为什么年份具有非年份值?你应该修复数据,而不是查询。有趣。。day(最后一天(concat(@year,'-02-01'))
怎么样?@PaulSpiegel闰年和非闰年的唯一区别是有无2月29日
。因此,您可以从3月1日减去1天,或在2月28日减去1天,并检查结果日期的日期。更改后,结果中仍然会出现“2011年I月”和“2009年I月I日”以及这些闰年。如何丢弃它们?@ShauryaSheth我无法重现您的问题,需要样本数据-请参阅对问题的评论。我不明白主要的'I'
符号是从哪里取来的……标题年0复仇者2012 1美国队长:内战2016 2狮子2016 3贫民窟百万富翁2008 4 20122009年我改变了它,仍然得到了“2011年”和“2009年”以及那些闰年的成绩。如何丢弃它们?添加示例创建表/插入脚本(或创建一个小提琴),以允许查看所描述的问题。@Akina AFAIKyear
未保留。'I 2009'
定位为0
。数据头如下所示:这是表格格式的文本,而不是SQL脚本。它甚至不允许定义值的位置和格式化空间的位置。
SELECT year, title
FROM Movie
WHERE !MOD(year, 4) - !MOD(year, 100) + !MOD(year, 400)
SELECT year, title from Movie where year%4=0 AND (year%100!=0 OR year%400=0) AND year=cast(ceil(year) as char);