select Fdate, Fweekday, Fname from t_duty where (Fdate/100) = 201101
为什么我的Fdate在mysql中设置的是int类型,Fdate/100的结果却不是int,而是201101.0100
本来我表中存的是具体日期,请问如何才能实现我的需求,就是提出来2011年1月的所有记录

解决方案 »

  1.   

    select Fdate, Fweekday, Fname from t_duty where left(Fdate,6) = '201101';
      

  2.   

    在MySQL 5.1中,近似值文字仍会被转换为浮点值,但准确值文字将被当作DECIMAL处理:
      

  3.   

    select Fdate, Fweekday, Fname from t_duty where Fdate = 201101*100
      

  4.   


    格式转换下,先转换成日期,然后year函数=2011和month函数=1不就搞定了吗?
      

  5.   

    where Fdate between 20110100 and 20110199这个是最高效的语句。
      

  6.   

    select Fdate, Fweekday, Fname from t_duty where cast((Fdate/100) as decimal(18,0))= 201101
      

  7.   

    sign, 为何不用div 操作符?
    select Fdate, Fweekday, Fname from t_duty where (Fdate div 100) = 201101;
    mysql> select 10001/100;
    +-----------+
    | 10001/100 |
    +-----------+
    |  100.0100 |
    +-----------+
    1 row in set (0.02 sec)mysql> select 10001 div 100;
    +---------------+
    | 10001 div 100 |
    +---------------+
    |           100 |
    +---------------+
    1 row in set (0.00 sec)
      

  8.   

    select Fdate, Fweekday, Fname from t_duty where where Fdate between 20110100 and 20110199直接计算,省略中间转换时间,如果使用转换函数,肯定计算时间大于直接计算