Perl和MYSQL。我可以用变量替换now()吗?

时间:2014-02-19 03:28:20

标签: mysql perl

当我使用下面的代码时,它会从数据库的今天和过去一周开始得到结果。

代码:

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的新手。

1 个答案:

答案 0 :(得分:1)

您必须将Datetitme-String转换为“数据库日期”。而不是

date_sub('$datetime',INTERVAL 1 WEEK)

使用:

 date_sub(str_to_date('$datetime','%y-%m-%d %T'),INTERVAL 1 WEEK)

请(!)不要在SQL中使用文字。尝试使用绑定