2

我有两个表itemssale_invoice_items, items 有一个标志,指示该项目是否过期,而 sale_invoice_items 有过期日期。现在在做 SELECT 来返回我正在做的发票时:

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

所以如果物品过期,则在字段中返回过期日期,否则,只需写“-”

项目名称返回正常,但到期不是,而是返回一个字节数组。

我做错了什么?

4

1 回答 1

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

为达到这个。

如果您想要返回一个日期,那么您需要确定您期望“其他”情况的哪个值:一个虚拟日期,一个空......?

于 2013-05-25T12:08:10.363 回答