//本月的第一天,最后一天
$start=date('Y-m-01', strtotime(date("Y-m-d")));
echo date('Y-m-d', strtotime("$start +1 month -1 day"));
//上一个月的第一天,最后一天
$start=date("Y-m-d",strtotime("2016-11-01"."-1 month"));
echo date('Y-m-d', strtotime("$start +1 month -1 day"));
//下一个月的第一天,最后一天
$start=date("Y-m-d",strtotime("2016-11-01"."+1 month"));
echo date('Y-m-d', strtotime("$start +1 month -1 day"));

一、当天或当日插入的数据:

1、传统对比判断:SELECT * FROM `t` WHERE DATE_FORMAT(addTime,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')");
2、第一点的简写:SELECT * FROM `t` WHERE addTime >= date_format(NOW(),'%Y-%m-%d');
3、利用函数判断:SELECT * FROM `t` WHERE DATEDIFF(addTime,NOW()) =0;//推荐此方法
4、利用时间戳判断:SELECT * FROM `t` WHERE addTime BETWEEN (UNIX_TIMESTAMP(now()-86440)) AND now();
注:返回当天时间的mysql函数有CURDATE()、CURRENT_DATE()、CURRENT_DATE、NOW()几种;其中NOW()获取的日期格式为0000-00-00 00:00:00的时间;CURDATE()、CURRENT_DATE()、CURRENT_DATE是获取日期格式为0000-00-00的时间,所以返回的时间无时分秒;

1、时间戳转日期,方法是select from_unixtime(1336542121);
2、日期转时间戳,方法是:select unix_timestamp('2013-04-08′);

mysql分区

使用 : select * from news_main PARTITION(news_main_a)

注意:当我们使用insert语句的时候,默认会分配到最后一个分区

注意:据说只有MyISAM类型才可以分区

#分区
alter table news_main PARTITION by range(id)
(
PARTITION news_main_a values less than(4),
PARTITION news_main_b values less than(6),
PARTITION news_main_c values less than(MAXVALUE)
); #显示Mysql的文件目录路径
show VARIABLES like '%datadir%'; #合并分区
alter table 表名 reorganize partition 分区名1,分区名2 into (partition 分区名 values less than (xx)); #取消分区(重新合并所有分区)
Alter table news_main remove partitioning; #删除分区(包含分区中的数据)
alter table 表名drop partition 分区名;(丢数据)

explain 性能检测(不会执行操作)

ALL    #(最差)全表扫描

index  # 排序查询,如order by id,id必须是索引或者主键,说明了哪怕默认是正排序,也得使用一下

range  # 范围查询,如where id > 20 、 id like '20%',id必须是索引或者主键

const  #(最优)索引查询,如where id = 1

时间类型字段通常用timestamp类型。默认公式为:CURRENT_TIMESTAMP

rand()随机获取1-50的整数

SELECT FLOOR(1 + (RAND() * 50));

获取guid

SELECT UUID();

@变量赋值与取值

SELECT user_name,user_pwd INTO @user_name,@user_pwd from user_table where user_id = '';

SELECT @user_name,@user_pwd;

SELECT + IF

select if(bid <> '',3,type) from statements

获取当前时间

SELECT CURDATE()  //2016-06-20

获取昨天的时间

SELECT UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL  DAY)) //2016-06-19

获取当前时间戳

SELECT UNIX_TIMESTAMP() 

转换时间戳

SELECT FROM_UNIXTIME(update_time, '%Y-%m-%d %H:%i:%S') FROM `user`

SELECT FROM_UNIXTIME( `happen_time` ) from statements 

获取当前时间

mysql> select now();

+---------------------+
| now() |
+---------------------+
| 2008-08-08 22:20:46 |
+---------------------+

时间相差(其中unit单位有如下几种,分别是:FRAC_SECOND (microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR。)

SELECT TIMESTAMPDIFF(HOUR,'2016-05-13 20:50:54',now())

时间转化

DATE_FORMAT('2012-12-12 11:10:02','%Y-%m-%d')

定义变量以及赋值

SELECT @Q := question as Q FROM user WHERE openid = '' limit 

mysql - 语法复习与学习的更多相关文章

  1. 学习mysql语法--基础篇(一)

      前  言  mysql  mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分:    一.创建用户,创建数据库,给 ...

  2. 学习mysql语法--基础篇(二)

      前  言  mysql  mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分: [SQL语句的组成]   DML ...

  3. mysql语法之case when then与列转行

    mysql语法中case when then与列转行的使用场景非常丰富. case语句类似java中条件分支语句的作用,可以类比java中的switch语句或者if语句来学习. 其语法如下: case ...

  4. MySQL实战45讲学习笔记:第十五讲

    一.引子 在今天这篇答疑文章更新前,MySQL 实战这个专栏已经更新了 14 篇.在这些文章中,大家在评论区留下了很多高质量的留言.现在,每篇文章的评论区都有热心的同学帮忙总结文章知识点,也有不少同学 ...

  5. mysql 5.0存储过程学习总结

    mysql存储过程的创建,删除,调用及其他常用命令 本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.q ...

  6. 多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客

    多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客 多IDC数据分布--MySQL多机房部署

  7. MYSQL 语法大全自己总结的

    mysql语法大全 --------数据链接---------------------数据库服务启动net start mysql --关闭服务net stop mysql --登录 -u,-p后面不 ...

  8. 语法分析器初步学习——LISP语法分析

    语法分析器初步学习——LISP语法分析 本文参考自vczh的<如何手写语法分析器>. LISP的表达式是按照前缀的形式写的,比如(1+2)*(3+4)在LISP中会写成(*(+ 1 2)( ...

  9. MySQL事务控制语句(学习笔记)

    MySQL事务控制语句(学习笔记) MySQL事务控制语句         在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作.因此开启一个事务必须使用begi ...

随机推荐

  1. yeoman-angular-gulp

    1.安装 yeoman npm install -g yo gulp bower 2.安装genarate-angular //npm install generator-angular npm in ...

  2. java编程思想---对象

    一.对象 对于每种语言来说,都有自己操纵内存中元素的方法. 在java中,一切被视为对象.可是操纵对象的是一个"引用".举个样例,能够比作为遥控器对电视的操作,遥控器就是引用,而电 ...

  3. Jmeter-Maven-Plugin高级应用:Adding additional libraries to the classpath

    Adding additional libraries to the classpath Pages 12 Home Adding additional libraries to the classp ...

  4. Java从零开始学十五(继承)

    一.继承作用 继承使用复用以前的代码非常容易,能够大大的缩短开发周期,降低开发成本,同时增加程序的易维护性 继承使重一个类A能够直接使用另外一个类B的属性和方法的一种途径 类A可以有自己的属性和方法 ...

  5. 移动H5前端性能优化指南[转]

    移动H5前端性能优化指南 米随随2015.01.23 移动H5前端性能优化指南 概述 1. PC优化手段在Mobile侧同样适用2. 在Mobile侧我们提出三秒种渲染完成首屏指标3. 基于第二点,首 ...

  6. rxvt-unicode配置

    我的urxvt配置文件如下 前缀可改为rxvt然后可以使用rxvt命令启动 -/.Xresources ! urxvt color set URxvt.multichar_encoding:utf-8 ...

  7. 怎样让CodeBlocks支持C99

    转载请注明出处,否则将追究法律责任http://blog.csdn.net/xingjiarong/article/details/47080303 CodeBlocks是一个写C/C++的比較好的编 ...

  8. bash: fork: Resource temporarily unavailable

    Last login: Wed Jul 26 09:19:11 2017 from ... -bash: fork: Resource temporarily unavailable -bash-3. ...

  9. [Table] pm_result

    ', '20160501.17:30 - 20160501.17:45', '2.1', '3.1', '3.1', '3.11', '3.44', '12.30', null, null, null ...

  10. 浅析iOS tableview的selectRowAtIndexPath选中无效(默认选中cell无效)

    可能很多人都遇到过这种情况: tableview列表,有时加载完,需要默认选中某一行,给予选中效果:或者需要执行某行的点击事件. 我们举例: 比如我想默认选中第一行 可能我们第一个想法就是这样: [m ...