我在 MySQL 中使用 INSERT ... SELECT 查询。现在,在我的数据库中有一个名为“medDate”的列,我将其用于我的药品库存应用程序。它的类型为 Varchar,格式为“July 2014”。现在我想使用 insert...select 查询来复制上个月的记录。但当我测试对 MySQL 的查询时,出现错误,指出日期时间值不正确。你能帮我解决这个问题吗?这是我的查询。
INSERT INTO medicinesinventory (itemName, compCode, classID,
medDate, price, beginningIn, newIn,
outMed, sales) SELECT DISTINCT(itemName),
compCode, classID, CURDATE(),
price, 0.0, 0, 0.0, 0.0
FROM medicinesinventory
WHERE YEAR(medDate) = DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%M %Y')
AND MONTH(medDate) = DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%M %Y');
样本数据
compCode medID classID medDate itemname price beginningIn newIn outMed sales
GOLDEN 148 20 July 2014 sample 0.00 0 0.00 0.00 6.00
最佳答案
函数year()
和month()
需要日期。您可以使用 str_to_date()
获取日期,因为 MySQL 支持“部分”日期(即没有日期的日期。因此,请尝试以下操作:
WHERE YEAR(str_to_date(meddate, '%M %Y')) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND
MONTH(str_to_date(meddate, '%M %Y')) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
或者,您似乎想以相同的格式格式化上个月并进行比较。这也可以工作:
WHERE medDate = DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%M %Y')
关于mysql - 使用日期格式的 INSERT ... SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25125861/