mysql使用05

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> #现在我们来讨论星期数的问题
mysql> set @a='2011-01-01';
Query OK, 0 rows affected (0.01 sec)

mysql> set weekday(@a),dayofweek(@a),dayname(@a);
ERROR 1193 (HY000): Unknown system variable 'weekday'
mysql> set dayofweek(@a),dayname(@a);
ERROR 1193 (HY000): Unknown system variable 'dayofweek'
mysql> select weekday(@a),dayofweek(@a),dayname(@a);
+-------------+---------------+-------------+
| weekday(@a) | dayofweek(@a) | dayname(@a) |
+-------------+---------------+-------------+
|           5 |             7 | Saturday    |
+-------------+---------------+-------------+
1 row in set (0.00 sec)

mysql> #表示出了 我们所要的日期
mysql>
mysql> select dayname(now());
+----------------+
| dayname(now()) |
+----------------+
| Monday         |
+----------------+
1 row in set (0.00 sec)

mysql> set lc_time_names = 'zh_CN';
Query OK, 0 rows affected (0.00 sec)

mysql> select dayname(now());
+----------------+
| dayname(now()) |
+----------------+
| 星期一         |
+----------------+
1 row in set (0.00 sec)

mysql> #设置了显示的格式  至中国时区的表示法
mysql> select week('2011-01-01'),
    -> week('2011-01-02),
    '> week('2011-01-03');
    '> ;
    '> ;
    '> ';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2011-01-03');
;
;
'' at line 2
mysql> select week('2011-01-01'),
    -> week('2011-01-02'),
    -> week('2011-01-03');
+--------------------+--------------------+--------------------+
| week('2011-01-01') | week('2011-01-02') | week('2011-01-03') |
+--------------------+--------------------+--------------------+
|                  0 |                  1 |                  1 |
+--------------------+--------------------+--------------------+
1 row in set (0.00 sec)

mysql> #外国人将星期日算为一周的开始 这就不符合中国人习惯
mysql>
mysql> create table sales
    -> (
    -> id int primary key auto_increment not null,
    -> date datetime not null,
    -> cost int unsigned not null
    -> );
Query OK, 0 rows affected (0.11 sec)

mysql>
mysql> insert into sales(date, cost) values('2010-12-31',100);
Query OK, 1 row affected (0.03 sec)

mysql> insert into sales(date, cost) values('2011-01-01',200);
Query OK, 1 row affected (0.04 sec)

mysql> insert into sales(date, cost) values('2011-01-02',100);
Query OK, 1 row affected (0.03 sec)

mysql> insert into sales(date, cost) values('2011-01-06',100);
Query OK, 1 row affected (0.03 sec)

mysql> insert into sales(date, cost) values('2011-01-10',100);
Query OK, 1 row affected (0.04 sec)

mysql> #现在我们建立了数据库  并且插入了一些数据
mysql> select * from sales;
+----+---------------------+------+
| id | date                | cost |
+----+---------------------+------+
|  1 | 2010-12-31 00:00:00 |  100 |
|  2 | 2011-01-01 00:00:00 |  200 |
|  3 | 2011-01-02 00:00:00 |  100 |
|  4 | 2011-01-06 00:00:00 |  100 |
|  5 | 2011-01-10 00:00:00 |  100 |
+----+---------------------+------+
5 rows in set (0.00 sec)

mysql> #现在看看按周分组的情况
mysql> select week(date), sum(cost)
    -> from sales
    -> group by week(date);
+------------+-----------+
| week(date) | sum(cost) |
+------------+-----------+
|          0 |       200 |
|          1 |       200 |
|          2 |       100 |
|         52 |       100 |
+------------+-----------+
4 rows in set (0.00 sec)

mysql> #我们可以看出一些问题  2010-12-31作为52周,但是在中国和2011-01-01是同一周
mysql>
mysql> select floor(datediff(date,'1900-01-01')/7) as a, sum(cost) from sales group by floor(datediff(date,'1900-01-01')/7);
+------+-----------+
| a    | sum(cost) |
+------+-----------+
| 5791 |       400 |
| 5792 |       100 |
| 5793 |       100 |
+------+-----------+
3 rows in set (0.00 sec)

mysql> #其中 a表示1900-01-01到现在的周数
mysql> #现在进行修改
mysql>
mysql> select date_add('1900-01-01',
    -> interval floor(datediff(date,'1900-01-01')7)*7 day)
    -> as week_start,
    -> date_add('1900-01-01', interval floor(datediff(date,'1900-01-01')*7+6 day)
    -> as week_end,
    -> sum(cost)
    -> from sales;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '7)*7 day)
as week_start,
date_add('1900-01-01', interval floor(datediff(date,'19' at line 2
mysql>
mysql> select
    -> date_add('1900-01-01',interval floor(datediff(date,'1900-01-01')7)*7 day) as week_start,
    -> date_add('1900-01-01',interval floor(datediff(date,'1900-01-01')*7+6 day) as week_end, sum(cost)
    -> from sales
    -> group by floor(datediff(date,'1900-01-01')/7);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '7)*7 day) as week_start,
date_add('1900-01-01',interval floor(datediff(date,'190' at line 2
mysql> #shit,,,,,
mysql>
mysql> select
    -> date_add('1900-01-01',interval floor(datediff(date,'1900-01-01')/7)*7 day) as week_start,
    -> date_add('1900-01-01',interval floor(datediff(date,'1900-01-01')/7)*7 +6 day) as week_end, sum(cost)
    -> from sales
    -> group by floor(datediff(date,'1900-01-01')/7);
+------------+------------+-----------+
| week_start | week_end   | sum(cost) |
+------------+------------+-----------+
| 2010-12-27 | 2011-01-02 |       400 |
| 2011-01-03 | 2011-01-09 |       100 |
| 2011-01-10 | 2011-01-16 |       100 |
+------------+------------+-----------+
3 rows in set (0.00 sec)

mysql> #ok  
mysql> #可以看到日期包含了2010-12-31
mysql>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值