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

标签 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 新手。

最佳答案

您必须将 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/

相关文章:

python - OSX El Capitan sqlalchemy 无法连接到 '127.0.0.1' (111) 上的 MySQL 服务器

MySQL 同一查询的索引使用不一致

perl - 使用系统命令将 stdout 和 stderr 输出重定向到文件在 perl 中不起作用

php - 如何以简单的形式禁用 SQL 注入(inject)的可能性?

php - 使用 php 将 MySql 查询滚动到下一列。

perl - 如何检查 key 是否存在于深层 Perl 哈希中?

Perl 合并文件

Perl one-liner 从文件中删除尾随空格

mysql - 今天完成帖子,但至少提前 20 分钟

bash - Perl Pack 在 Shell 变量上解压