我在保存为varchar的数据库中有日期(2011年9月11日)。我想尝试这样的查询:
$result=mysql_query("SELECT * FROM post WHERE YEAR(STR_TO_DATE(datum,'%e %M %Y') ='2011')") or die(mysql_error());
它正在返回NULL
。
答案 0 :(得分:3)
我认为,如果你的字段类型是varchar,你可以使用这种格式。
$result=mysql_query("SELECT * FROM post WHERE datum LIKE '%2011'") or die(mysql_error());
答案 1 :(得分:1)
示例:
SELECT * FROM post WHERE YEAR(STR_TO_DATE(datum,'%d %M %Y'))= 2011;
SELECT YEAR(STR_TO_DATE('11 September 2011','%d %M %Y'));
答案 2 :(得分:0)
从MySQL论坛查看此论坛帖子并根据您的需要修改解决方案。
答案 3 :(得分:0)
您应该将列类型更改为数据库表中的datetime以备将来使用。例如,您可能需要datetime来执行加法,减法,倒计时等操作。因此,如果您想进行比较或验证,这将更容易。因此,您的mysql语句可以很容易,如下所示。
SELECT FROM FROM tbl_name WHERE column_name< = date_col;
答案 4 :(得分:-1)
您将无法得到答案,因为......您已将varchar()
添加到数据库中,因此无需STR_TO_DATE(datum,'%e %M %Y');
只需输入select * from table name where column name="2011"