我有一个表,它按创建日期记录数据文件的版本(时间戳存储为INT)。每月最多上传1个版本。
在下面的查询中,我试图获取在1月,4月,7月或10月上传的任何版本的导入时间。
> SELECT import_time FROM importlog WHERE
> DATE_FORMAT(FROM_UNIXTIME(import_time), '%m') = 1 OR
> REPEAT(DATE_FORMAT(FROM_UNIXTIME(import_time), '%m') = 1+3,3))
目前这只返回Jan和Apr,因为我看到重复只是做了3次相同的条件。 我认为需要发生的是每次重复声明发生时1 + 3语句都是错误的:
1+3;
1+6;
1+9;
我需要这样的动态方法,因为虽然我已将其描述为1月,但实际上这个日期也可能因用户而异。
由于我不断回到auto_increment来创建INSERT查询,因此我的研究并不富有成效。任何见解都是最受欢迎的。
更新 我能够通过一个单独的Mysql查询来做到这一点,该查询为所有允许的月份创建一个字符串。 $ months =(1,4,7,10) DATE_FORMAT(FROM_UNIXTIME(import_time),'%m')IN $ months
所以这是一个快速而肮脏的解决方案,对于我自己的学习,我很想知道是否有更复杂的解决方案。
亲切的问候, 卡尔
答案 0 :(得分:0)
为什么你不这样做?
SELECT import_time
FROM importlog
WHERE DATE_FORMAT(FROM_UNIXTIME(import_time), '%m') in ('01', '04', '07', '10');