2017-03-03 28 views
1

我必須檢查我的數據庫中是否有空, 和我需要檢查11列(由or)和加上和像年(如2017%)。警告1292當我在mysql中使用像Python一樣使用

def test(): 
    sql= "select date from a000760 where (total_assets is null or total_liabilities is null or sales_figures is null or sales_cost is null or business_profits is null or gross_margin is null or current_income is null or depreciation_expense_of_tangible_assets is null or liquid_asset is null or noncurrent_asset is null or liquid_liability is null) and (date like '2010%')" 
    curs.execute(sql) 
    #year="2010" 
    #curs.execute("select date from a000760 where (total_assets is null or total_liabilities is null or sales_figures is null or sales_cost is null or business_profits is null or gross_margin is null or current_income is null or depreciation_expense_of_tangible_assets is null or liquid_asset is null or noncurrent_asset is null or liquid_liability is null) and (date like %s)",year) 
    result = curs.fetchall() 
    if len(result)>0: // print shows() even if it's none. so, I use this 
     print "a000760" 
     print "2010 null exists" 

這是一張表的測試版本。 我必須檢查超過2000個表格。 它適用於此def並顯示錯誤(僅適用於一個表格)。 但它不適用於總表。 我得到這個錯誤:

Warning: (1292, "Incorrect date value: '2010%' for column 'date' at row 1") 

我不知道該怎麼... 我搜索了整個語法, 但是當我鍵入%2017%這是行不通的。

+0

所有地方發生此錯誤是,當他們試圖插入一個無效的日期到表中的其他問題。當我嘗試在「SELECT」查詢中比較日期時,我不會收到此錯誤。 – Barmar

回答

0

請勿在日期中使用like!日期不是字符串。

你可以這樣做:

year(date) = 2010 

或者:

date >= '2010-01-01' and date < '2011-01-01' 
+0

我該如何爲答案投票:) – JsYun