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

Perl和MYSQL。我可以用变量替换now()吗?,mysql,perl,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,DPPR

当我使用下面的代码时,它将从数据库中获得从今天开始到上周的结果

代码:

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字符串转换为“数据库日期”。而不是

date_sub('$datetime',INTERVAL 1 WEEK)
使用:


请不要在SQLs中使用文本。尝试使用绑定

你得到了什么错误?@deathron5000它从数据库中什么也得不到,但我确信数据库中有数据。抱歉把你搞糊涂了,代码没有错误。我现在修改线程。尝试打印SQL查询并通过mysql客户端运行它。如果有任何错误,请告诉我们appear@user4035为您竖起大拇指(您的回答提醒我,我可以通过客户端检查sql语句),感谢您查看此线程。我发现代码上没有错误,而替换代码正是可行的,只是我的同事没有告诉我就修改了日期。一旦我出错,这个线程会一直提醒我检查mysql客户端。非常感谢你。
 date_sub(str_to_date('$datetime','%y-%m-%d %T'),INTERVAL 1 WEEK)