2013-05-25 28 views
2

我有兩個表項目sale_invoice_items,項目有一個標誌,指示,如果該項目到期,並且sale_invoice_items有到期日。 現在做時,選擇返回發票我做:有條件選擇字段或靜態字符串在MySQL

select items.name as f1, IF(items.expiry =TRUE, sale_invoice_items.expiry, '-') as f2  
from sale_invoices, sale_invoice_items, items where sale_invoices.id = 3 and sale_invoice_items.invoice_id = sale_invoices.id and items.id = sale_invoice_items.item_id 

因此,該項目到期,然後在現場返回的到期日,否則,只寫「 - 」

項目名稱返回OK,但到期不是,它返回一個字節數組。

我做錯了什麼?

回答

2
select 
.... 
, case when items.expiry = true then 
    sales_invoice_items.expiry 
else 
    '-' 
end as expiry 
.... 
from 
.... 

你需要確保的

sales_invoice_items.expiry 

'-' 

的數據類型是相同的,即字符。您可以使用轉換函數這裏

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

實現這一目標。

如果你想要一個返回的日期,那麼你需要決定你對「其他」情況的期望值:一個假日期,一個空....?

+0

謝謝,格式必須匹配在這兩種情況下,這是我的錯誤,因爲到期日期是日期時間格式,而「 - 」是一個字符串。用DATE_FORMAT替換sale_invoice_items.expiry(sale_invoice_items.expiry,'%d-%m-%y')做了訣竅 –