我有一个mysql的时间字段,是TIMESTAMP类型的,我想获取年日月前10个字符,也就是
2009-06-18 20:22:10 里面的2009-06-18,我是用left(s.time,10)函数获取的,这个函数的效率会不会很低啊,谢谢大家

解决方案 »

  1.   

    主要是看你的where条件,与取数据没有多大关系
      

  2.   


    127.0.0.1~root@localhost~(none)>select date('2009-06-18 20:22:10');
    +-----------------------------+
    | date('2009-06-18 20:22:10') |
    +-----------------------------+
    | 2009-06-18                  |
    +-----------------------------+
    1 row in set (0.00 sec)
    日期函数,LEFT是字符串函数。
    效率不清楚,
      

  3.   


    效率比较差,另外也不保证你的这个安全。不如一楼的直接用date() 函数快。但效率最好的则是
    where 时间字段 between '2009-06-18' and '2009-06-18 23:59:59'
      

  4.   

    用了函数 都走不了索引..
    你要在时间列上做手脚 一般也是采用时间函数 而不是字符串函数 
    2L给了date()函数 
    推荐使用3L的 between  and 
    这样不给列做函数,就可以走索引
      

  5.   

    LZ的意思只是把这个年月日读出来么?3L的between and的话,只是根据这个时间段查找吧?,如果where里没有时间字段呢?只是单纯的想把那个时间读出来是不是用date好一些?
    求指点~