我正在尝试使用日期数据类型列从mysql表中检索当前月份的数据。 这是我的查询,不返回任何内容
SELECT *
FROM `overview` AS s1 INNER JOIN
`payments` AS s2 ON s1.Booking_id = s2.Booking_id
WHERE YEAR(s1.Booking_date) = YEAR(CURDATE())
AND MONTH(s1.Booking_date) = MONTH(CURDATE());
First table :**overview** S_no Int (auto increment) Primary Key Booking_id varchar Booking_Date Date(YYYY-mm-dd)
**Second table** Booking_id Primary Key price int
如果有人能为上述代码提供存储过程,我将非常感激。
答案 0 :(得分:0)
这个查询是否会为您返回任何内容?
SELECT
*
FROM
`overview` AS s1
INNER JOIN
`payments` AS s2
ON
s1.id = s2.id
两个独立的表具有相同的主键是不寻常的。通常在执行表连接时使用外键。您的日期逻辑是否可能正确,但查询的主要部分是错误的?我只是猜测,因为我不知道你的数据库架构。
答案 1 :(得分:0)
您与payments
表的加入是错误的。正确的查询如下。您需要使用正确的列名替换s2.overview_id
。
SELECT *
FROM `overview` AS s1 INNER JOIN
`payments` AS s2 ON s1.id = s2.overview_id
WHERE YEAR(s1.king_date) = YEAR(CURDATE())
AND MONTH(s1.king_date) = MONTH(CURDATE());
使用此功能,您可以创建如下存储过程:
CREATE PROCEDURE `spName`()
BEGIN
SELECT *
FROM `overview` AS s1 INNER JOIN
`payments` AS s2 ON s1.id = s2.overview_id
WHERE YEAR(s1.king_date) = YEAR(CURDATE())
AND MONTH(s1.king_date) = MONTH(CURDATE());
END
答案 2 :(得分:0)
对于创建存储过程:
DELIMITER $$
CREATE PROCEDURE GetPaymentsofCurrentMonth()
BEGIN
SELECT *
FROM `overview` AS s1 INNER JOIN
`payments` AS s2 ON s1.id = s2.id
WHERE YEAR(s1.king_date) = YEAR(CURDATE())
AND MONTH(s1.king_date) = MONTH(CURDATE());
END
调用存储过程:
CALL GetPaymentsofCurrentMonth();
答案 3 :(得分:0)
我终于解决了这个问题。我的查询是正确的,问题是由于Excel数据导入而随机保留的数据列。我纠正了。现在它的工作正常。通过将自定义单元格属性转换为excel文件中的文本。