0

我正在编写一个函数,它可以为我带来特定月份和年份的所有匹配项。我将月份编号和年份值传递给该函数,它应该使用以下查询来获取结果:

SELECT tahminler.match_id, tahminler.tahmin_text,matches_of_comments.match_id
FROM tahminler
INNER JOIN matches_of_comments ON tahminler.match_id = matches_of_comments.match_id
WHERE (
matches_of_comments.match_date =  'I DO NOT KNOW WHAT TO WRITE HERE'
)
AND tahminler.user_id =12

问题是matches_of_comments.match_date类型是 varchar 并且我将月份和年份的值作为数字传递以制作表格,例如11.2013如何将我传递的表格与 varchar 日期进行比较?我可以将类型转换为日期吗?如果我能做到这一点,如何比较部分日期(只是月份和年份)?

4

2 回答 2

0

试试这个先转换为日期,然后比较月份和年份,注意将日期存储为 varchar 是不好的做法

SELECT tahminler.match_id, tahminler.tahmin_text,matches_of_comments.match_id
FROM tahminler
INNER JOIN matches_of_comments ON tahminler.match_id = matches_of_comments.match_id
WHERE (

MONTH(STR_TO_DATE(matches_of_comments.match_date , '%m/%d/%Y'))=  '07'//month variable
 AND YEAR(STR_TO_DATE(matches_of_comments.match_date , '%m/%d/%Y'))=  '2013'//year variable
)
AND tahminler.user_id =12

STR_TO_DATE(字符串,格式)

于 2013-11-02T10:21:31.330 回答
0
STR_TO_DATE('11.2013', '%m.%Y')

将字符串转换为日期时间数据类型。要以您需要的任何格式进行比较,您可以重新格式化它:

DATE_FORMAT(STR_TO_DATE('11.2013', '%m.%Y'), '%Y-%m-%d')
于 2013-11-02T10:37:51.227 回答