如何在sql查询中比较日期?

时间:2013-11-02 10:14:08

标签: mysql sql date

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

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日期的表单? ?我可以将类型转换为日期??如果我能做到这一点如何比较部分日期(只是月份和年份)??

2 个答案:

答案 0 :(得分: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(str,format)

MONTH

YEAR

答案 1 :(得分:0)

STR_TO_DATE('11.2013', '%m.%Y')

会将字符串转换为datetime数据类型。 要以任何格式进行比较,您需要重新格式化:

DATE_FORMAT(STR_TO_DATE('11.2013', '%m.%Y'), '%Y-%m-%d')