biçimi publish_date
biçimini eşleşmiyor.
(publish_date
bir DATETIME sütun olarak tanımlı değil neden herhangi bir sebep? Var mı)
Testi farklı bir biçim, senin dizeleri biçimine uyan birini kullanarak dönüşüm ...
SELECT STR_TO_DATE(publish_date,'%Y-%m-%d %T')
FROM `table`
LIMIT 10
Bu ikinci argümanın STR_TO_DATE işlevinin belirli bir anlamı vardır. Bu sadece anlamsız bir karmakarışık değil. ,
MONTH(publish_date) = 11
Ama kişisel olarak, ben STR_TO_DATE fonksiyonu içerir: PUBLISH_DATE dizesinin biçimi göz önüne alındığında
http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format
işlevi STR_TO_DATE açık referans ihmal olabilir, MySQL DATETIME için varsayılan biçimi maçları dönüşümü açık yapmak.
Ama, İstemem VARCHAR değerleri karşılaştırarak, yapmanız gerekenleri yapmak olsaydı; t bugüne kadar dönüştürerek ile rahatsız, sadece 8 karakterden aracılığıyla 5'inci ayıklamak için SUBSTRING işlevi kullanmak istiyorum
SUBSTR(publish_date,5,4) = '-11-'
Karşılaştırmanın sol tarafındaki ifade NULL döndürüyor. Ve NULL asla "on bir eşit" değil. Ve bu ifade, NULL döndürüyor çünkü bu, DATETIME olarak dizge değerinin dönüşümünün sonucudur, çünkü belirtilen biçim (STR_TO_DATE için ikinci argüman olarak) strnig değerinin biçimi ile eşleşmiyor. MySQL dizeyi DATETIME olarak değiştiremez. – spencer7593