Mysql SQL:使用动态日期获取行

Mysql SQL:使用动态日期获取行,mysql,Mysql,首先,让我先说我是一名大三学生,如果这是一个非常愚蠢的问题或不可能,我会道歉 我在SQL脚本中有一个WHERE子句,如果日期晚于某个日期,它将获取行。像这样: WHERE u.created > UNIX_TIMESTAMP('2018-04-01') 月份和日期将始终相同,但年份需要每年与当前年份一起更改。因此,明年4月我将不得不对代码进行修改,内容如下: WHERE u.created > UNIX_TIMESTAMP('2019-04-01') 我想知道

首先,让我先说我是一名大三学生,如果这是一个非常愚蠢的问题或不可能,我会道歉

我在SQL脚本中有一个
WHERE
子句,如果日期晚于某个日期,它将获取行。像这样:

WHERE 
    u.created > UNIX_TIMESTAMP('2018-04-01')
月份日期将始终相同,但年份需要每年与当前年份一起更改。因此,明年4月我将不得不对代码进行修改,内容如下:

WHERE 
    u.created > UNIX_TIMESTAMP('2019-04-01')

我想知道如果日期和月份已过4月1日,是否可以将年份更新为当前年份一个选项是使用
DATE\u格式
NOW()
函数作为当前年份的源代码:

WHERE
    u.created > UNIX_TIMESTAMP(DATE_FORMAT(NOW() ,'%Y-04-01'))

创建的
是什么类型的
?@BenM它是
INT
(11)所以您要在该字段中存储Unix时间戳?将该字段更改为
DATE
,这将很有帮助。NOW()将提供当前日期和当前年份,而根据问题,要求仅在01-04之后选择当前年份,因此更好的选项是检查当前日期和月份date@AmanChhabra如果OP希望避免硬编码,则在本年4月1日,然后我的答案解决了这个问题。至于它是否是最好的解决方案,我不知道,但它是一个有效的解决方案。@AmanChhabra在本例中,您实际上是建议OP应该存储一个日期而不是UNIX时间戳。这可能是对的,但在某些情况下存储UNIX时间是有效的。@TimBiegeleisen我理解,但这里的要求是,如果当前日期未超过4月1日或用户01-04-CUR年,则检查使用01-04-LASTYEAR创建的u。要求是“如果日期和月份超过4月1日,我想知道是否有可能将年份更新为当前年份”@AmanChhabra,如果您确定这一点,那么您应该发布正确的答案。我不知道你在说什么。我们不能直接将日期与UNIX时间戳进行比较。