请问哪种type的日期可以输成像“Jan-01-2015”这种形式?不会要用varchar吧?

解决方案 »

  1.   

    就使用datetime类型保存,只是在查询的时候,使用DATEFORMAT就可以了。mysql> select mydate from t_date;
    +---------------------+
    | mydate              |
    +---------------------+
    | 2014-09-21 00:00:00 |
    +---------------------+
    1 row in set (0.00 sec)mysql> select DATE_FORMAT(mydate,'%b-%d-%Y') from t_date;
    +--------------------------------+
    | DATE_FORMAT(mydate,'%b-%d-%Y') |
    +--------------------------------+
    Sep-21-2014                    |
    +--------------------------------+
    1 row in set (0.27 sec)
      

  2.   

    表格定义:
    mysql> show create table t_date;
    +--------+-----------------------------------
    | Table  | Create Table
    +--------+-----------------------------------
    | t_date | CREATE TABLE `t_date` (
      `mydate` datetime DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk |
    +--------+-----------------------------------
    1 row in set (0.00 sec)
      

  3.   


    非常感谢,还有就是我有一列是sales,里面输入的是$100,$200,$300,像这样的美元值我该用什么类型?int好像不行,用char型求的和就有问题了,这个该怎么办呢?
      

  4.   


    用你这种方法的话,我再输入select * from 表名;
    结果还是没有改变
      

  5.   

    日期的输出格式,如果不用 format 来说明,则只会使用系统默认的格式输出。
      

  6.   

    select * from 表名,结果是不会改变,需要使用format才行。
    你可以使用select语句的时候,把列名都写出来,不使用*来返回结果。另外,可以将格式化返回结果的列重命名,如下所示:
    select DATE_FORMAT(mydate,'%b-%d-%Y') as new_mydate  from t_date
      

  7.   


    非常感谢,还有就是我有一列是sales,里面输入的是$100,$200,$300,像这样的美元值我该用什么类型?int好像不行,用char型求的和就有问题了,这个该怎么办呢?
    ====如果你一定要存储$符号,你可以用varchar来存储,求和的时候取$字符后面的一串字符转换为数值再求和。
    例如:
    表t_date中的数据为:(其中sales定义为varchar类型)
    mysql> select * from t_date;
    +---------------------+--------+
    | mydate              | sales  |
    +---------------------+--------+
    | 2014-09-21 00:00:00 | $10000 |
    | 2014-09-10 00:00:00 | $100   |
    | 2014-09-12 00:00:00 | $200   |
    | 2014-09-12 00:00:00 | $300   |
    +---------------------+--------+
    4 rows in set (0.00 sec)
    那么求和可以这样实现:
    mysql> select DATE_FORMAT(mydate,'%b-%d-%Y') NewDate,CONCAT('$',SUM( SUBSTRING(sales,2)) ) NewSales FROM t_date;
    +-------------+----------+
    | NewDate     | NewSales |
    +-------------+----------+
    | Sep-21-2014 | $10600   |
    +-------------+----------+
    1 row in set (0.17 sec)