を与える...両方のテーブルにのMySQL:DUPLICATE KEY UPDATE ON私のクエリは簡単であるべき切り捨てられた不正な日付値の誤差に
INSERT INTO email_final_list
(E_mail, Title, First_Name, Last_Name, ZIP_Code, AddMethod, Update_Date, Status)
SELECT
DISTINCT E_mail,
Title,
First_Name,
Last_Name,
ZIP_Code,
CASE WHEN AddMethod IS NULL THEN 'Opera' ELSE 1 END as AddMethod,
Update_Date,
Status
FROM guest_profiles
WHERE E_mail NOT LIKE '' AND ifnull(Update_Date, '') <> '' AND STR_TO_DATE(Update_Date,'%d/%m/%Y') > CURDATE() - INTERVAL 5 DAY
ON DUPLICATE KEY UPDATE
email_final_list.E_mail = guest_profiles.E_mail,
email_final_list.Title = guest_profiles.Title,
email_final_list.First_Name = guest_profiles.First_Name,
email_final_list.Last_Name = guest_profiles.Last_Name,
email_final_list.ZIP_Code = guest_profiles.ZIP_Code,
email_final_list.AddMethod = guest_profiles.AddMethod,
email_final_list.Status = guest_profiles.Status,
email_final_list.Update_Date = guest_profiles.Update_Date
「更新日」フィールドはVARCHAR(なぜ全く分からない、ですが、これはすることはできませんかわった)。私はこれを実行したときしかし、それは本当に奇妙なことは、私はそれ自身の上のSELECTの部分を実行する場合、私は何も結果を得ることはありませんということです
[Err] 1292 - Truncated incorrect date value: '11/4/2013 00:00:00'
返します。
データベースは継承されているため、変更することはできません。スキーマ&の名前はすべてあちこちにありますが、残念ながら私はそれを使用しなければなりません。
私がここで間違っていることを誰もが知っていますか?
おかげ
編集:EXACTコードが
INSERT INTO `email-final-list`
(`E-mail`, Title, `First Name`, `Last Name`, `ZIP Code`, AddMethod, `Update Date`, `Status`)
SELECT
DISTINCT `E-mail`,
Title,
`First Name`,
`Last Name`,
`ZIP Code`,
CASE WHEN AddMethod IS NULL THEN 'Opera' ELSE 1 END as AddMethod,
`Update Date`,
`Status`
FROM `guest-profiles`
WHERE `E-mail` NOT LIKE '' AND ifnull(`Update Date`, '') <> '' AND STR_TO_DATE(`Update Date`,'%d/%m/%Y') > CURDATE() - INTERVAL 5 DAY
ON DUPLICATE KEY UPDATE
`email-final-list`.`E-mail` = `guest-profiles`.`E-mail`,
`email-final-list`.Title = `guest-profiles`.Title,
`email-final-list`.`First Name` = `guest-profiles`.`First Name`,
`email-final-list`.`Last Name` = `guest-profiles`.`Last Name`,
`email-final-list`.`ZIP Code` = `guest-profiles`.`ZIP Code`,
`email-final-list`.AddMethod = `guest-profiles`.AddMethod,
`email-final-list`.`Status` = `guest-profiles`.`Status`,
`email-final-list`.`Update Date` = `guest-profiles`.`Update Date`
あるしかし、私はAT ALLデータベースフィールドを変更することはできません。
この句では、 'STR_TO_DATE(Update_Date、 '%d /%m /%Y')> CURDATE()_ INTERVAL 5 DAY'のマイナス記号' -'の代わりに '_'を使用しているためですか? – RiggsFolly
おっと - それはタイプミスでした。今更新されました。 – JezB
コピー/ペーストでどのようにタイプミスをしますか?そして、それが実際のコードにあるようにコピー/ペースト以外のものがないのであれば? – RiggsFolly