0

我正在创建一个模拟电子商务数据库来测试脚本;我想运行以下代码,但还包含进一步的语句来根据到期日期选择卡。

SELECT customerCard.cardNumber, customer.firstName, customer.eMailAddress, customer.lastName, cardType, expiryDate
FROM customerCard
LEFT JOIN customer
USING ( eMailAddress ) 
LEFT JOIN card
USING ( cardNumber )
WHERE card.Expiry =< DATE_FORMAT(NOW(),'%m-%Y')
ORDER BY  `customerCard`.`cardNumber` ASC

我在 WHERE 语句的行中收到错误 - 我该如何解决这个问题?什么是正确的语法?

4

2 回答 2

1

请尝试以下操作:由于没有提供表模式/示例数据,代码主要基于假设。比如你的到期日就像'mm-yyyy' format

SELECT customerCard.cardNumber, customer.firstName, 
customer.eMailAddress, customer.lastName, cardType, expiryDate
FROM customerCard CC
LEFT JOIN customer CO
ON CC.eMailAddress = CO.eMailAddress 
LEFT JOIN card CD
ON CO.cardNumber = CD.cardNumber
WHERE DATE_FORMAT(CD.Expiry,'%m-%Y') =< DATE_FORMAT(NOW(),'%m-%Y') -- put both in same format
ORDER BY  CC.cardNumber ASC
于 2012-12-02T10:10:28.213 回答
0

我从您上面的帮助中找出了正确的 MySQL 查询语句。

SELECT customerCard.cardNumber, customer.firstName, customer.eMailAddress, customer.lastName, cardType, expiryDate
FROM customerCard
LEFT JOIN customer
USING ( eMailAddress ) 
LEFT JOIN card
USING ( cardNumber ) 
WHERE DATE_FORMAT( card.expiryDate,  '%y-%m-%d' ) <= DATE_FORMAT( 
CURRENT_TIMESTAMP ,  '%y-%m-%d' ) 
ORDER BY  `customerCard`.`cardNumber` ASC 
LIMIT 0 , 30
于 2012-12-05T08:16:49.983 回答