mysql日期问题 请问哪种type的日期可以输成像“Jan-01-2015”这种形式?不会要用varchar吧? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就使用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) 表格定义: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) 非常感谢,还有就是我有一列是sales,里面输入的是$100,$200,$300,像这样的美元值我该用什么类型?int好像不行,用char型求的和就有问题了,这个该怎么办呢? 用你这种方法的话,我再输入select * from 表名;结果还是没有改变 日期的输出格式,如果不用 format 来说明,则只会使用系统默认的格式输出。 select * from 表名,结果是不会改变,需要使用format才行。你可以使用select语句的时候,把列名都写出来,不使用*来返回结果。另外,可以将格式化返回结果的列重命名,如下所示:select DATE_FORMAT(mydate,'%b-%d-%Y') as new_mydate from t_date 非常感谢,还有就是我有一列是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) 在线等,高手继续进来指导下。。 网购海量订单数据如何保存? mysql的错误处理以及回滚的问题 字段累计 给表列加外键 可以用一条sql语句写出来吗 菜鸟提问:怎么才能看到当前登陆用户的权限等信息 mysql查询中文及中英混合的内容,android项目。 MYSQL 相同条件 传递不同值 查询快慢不同 执行计划一样 【求助】Navicat premium导入Exel丢了2000行 MySQL怎么加排名 为什么两个程序不能同时访问一个sql数据库
+---------------------+
| 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)
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)
非常感谢,还有就是我有一列是sales,里面输入的是$100,$200,$300,像这样的美元值我该用什么类型?int好像不行,用char型求的和就有问题了,这个该怎么办呢?
用你这种方法的话,我再输入select * from 表名;
结果还是没有改变
你可以使用select语句的时候,把列名都写出来,不使用*来返回结果。另外,可以将格式化返回结果的列重命名,如下所示:
select DATE_FORMAT(mydate,'%b-%d-%Y') as new_mydate from t_date
非常感谢,还有就是我有一列是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)