当我使用下面的代码时,它会从数据库的今天和过去一周开始得到结果。
代码:
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的新手。
答案 0 :(得分:1)
您必须将Datetitme-String转换为“数据库日期”。而不是
date_sub('$datetime',INTERVAL 1 WEEK)
使用:
date_sub(str_to_date('$datetime','%y-%m-%d %T'),INTERVAL 1 WEEK)
请(!)不要在SQL中使用文字。尝试使用绑定