2015-03-02 38 views
0

我有一个数据库,其中的[clock seconds]值保存在列“ablaufdatum”中。 我有一个Tcl脚本,从现在开始获取[clock seconds]并选择所有较旧的条目。但不知何故,以下查询不起作用,我无法找出原因。你可以帮我吗?Tcl/MySQL查询:将整数与秒数进行比较

set systemTime [clock seconds] 
set queryanzahlalteuser [::mysql::query $db {SELECT COUNT(*) FROM tbl_ticket WHERE aktiv='1' AND erstellt='1' AND ablaufdatum<'$systemTime'}] 

ablaufdatum也是一个]但保存为mysql数据库中的整数。

这没有回应任何值。 我试图

puts "SELECT COUNT(*) FROM tbl_ticket WHERE aktiv='1' AND erstellt='1' AND ablaufdatum<'$systemTime'" 

和显示的查询,如果键入的phpMyAdmin的控制台,工作正常,返回值。

整数格式是否可能导致这种情况? 还是必须以不同的方式格式化当前时间?

在此先感谢

回答

1

我不熟悉到MySQL(我使用SQLite更多),但我查了manuals,看来,用括号当命令::mysql::query不承担变量替换,所以尽量使用替代以下:

set systemTime [clock seconds] 
set queryanzahlalteuser [::mysql::query $db "SELECT COUNT(*) FROM tbl_ticket WHERE aktiv='1' AND erstellt='1' AND ablaufdatum<'$systemTime'"] 
              #^                       ^

使用双引号应该工作。

+0

也许删除变量周围的单引号。我不建议在一般的sql透视图中将整数数据类型与字符串进行比较。 – Jerry 2015-03-02 20:33:44

+0

似乎mysqltcl不支持参数化的SQL语句。我推荐tdbc :: mysql(它遵循TDBC API),而不是因为这个原因。 – 2015-03-02 21:49:04

+0

感谢您的输入,我看着tdbc :: mysql,但似乎无法找到很多文档... 我正在加载下列软件包(我必须先下载它们还是包含在Tcl中版本8.6?是否有加载包的方式有问题(Windows Server 2008 R2)? 包需要tdbc 包需要tdbc :: mysql 脚本只是在该部分结束......(我把“puts之前和之后“之前和之后这个要求,只有前面显示...) – Rory 2015-03-03 06:59:00