简体   繁体   English

如何从多个表的左联接中选择MAX日期

[英]How to select MAX date from left join of multiple tables

I have a invoice table, credit_memo table and payments table. 我有发票表,credit_memo表和付款表。 I am having trouble returning max date from invoice due date, payment issue date or credit memo issue date. 我无法从发票到期日,付款发布日期或贷项凭证发布日期返回最大日期。

SELECT
  T1.b2b_id,
  MAX(T1.due_date) | coalesce(T3.issue_date, '1000-01-01') | 
    coalesce(T4.issue_date, '10001-01-01') AS endDate
FROM t_invoice AS T1
   LEFT JOIN t_linked_transaction AS T2 ON T2.invoice_uid = T1.uid
   LEFT JOIN t_payment AS T3 ON T3.uid = T2.payment_uid
   LEFT JOIN t_credit_memo AS T4 ON T4.uid = t2.credit_memo_uid

The MAX query returns 20150301009885. MAX查询返回20150301009885。

The correct date is 2015-03-01 00:00:00, if I wrap the MAX query with DATE(MAX(...)) it returns NULL 正确的日期是2015-03-01 00:00:00,如果我用DATE(MAX(...))包装MAX查询,它将返回NULL

Thanks for the help 谢谢您的帮助

You need to cast to Char as per MySQL bug specified in link here 您需要按照此处链接中指定的MySQL错误强制转换为Char

MySQL Bug MAX(datetime) MySQL Bug MAX(日期时间)

SELECT
  T1.b2b_id,
  MAX (CAST(T1.due_date) AS CHAR) | coalesce(T3.issue_date, '1000-01-01') | 
    coalesce(T4.issue_date, '10001-01-01') AS endDate
FROM t_invoice AS T1
   LEFT JOIN t_linked_transaction AS T2 ON T2.invoice_uid = T1.uid
   LEFT JOIN t_payment AS T3 ON T3.uid = T2.payment_uid
   LEFT JOIN t_credit_memo AS T4 ON T4.uid = t2.credit_memo_uid

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM