2015-03-02 74 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

相關問題