当我使用下面的代码时,它将从数据库中获取今天和过去一周的结果。
代码:
my $sqlMySQL = "
SELECT LOT,DPPROGRAM,PROCESS,FILEMODDATE,COUNT(*)
FROM dc_fst_metadata
WHERE COMMENT='$comment'
AND ***FILEMODDATE between date_sub(now(),INTERVAL 1 WEEK) and now()***
GROUP BY LOT,DPPROGRAM,PROCESS";
现在的问题是我尝试用变量替换 now() (这是因为我想从前几天选择并跟踪回 7 天的结果,而不是从今天开始),并且它从数据库中没有得到任何结果。有什么建议或解决方案可以放入变量吗?
放入变量后的代码:
$datetime="2014-01-26 00:00:00"
my $sqlMySQL = "
SELECT LOT,DPPROGRAM,PROCESS,FILEMODDATE,COUNT(*)
FROM dc_fst_metadata
WHERE COMMENT='$comment'
AND ***FILEMODDATE between date_sub('$datetime',INTERVAL 1 WEEK) and '$datetime'***
GROUP BY LOT,DPPROGRAM,PROCESS";
非常感谢。 附注我是 Perl 和 MYSQL 新手。
最佳答案
您必须将 Datetitme-String 转换为“数据库日期”。而不是
date_sub('$datetime',INTERVAL 1 WEEK)
用途:
date_sub(str_to_date('$datetime','%y-%m-%d %T'),INTERVAL 1 WEEK)
请 (!) 不要在 SQL 中使用文字。尝试使用绑定(bind)
关于mysql - Perl 和 MYSQL。我可以用变量替换 now() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21870428/