//本月的第一天,最后一天
$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. NYoj-119-士兵杀敌(3)-RMQ算法

    士兵杀敌(三) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5 描写叙述 南将军统率着N个士兵,士兵分别编号为1~N,南将军常常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进 ...

  2. windows server 2012 IE增强的安全配置如何关闭

    http://jingyan.baidu.com/article/6181c3e076ac0b152ff15354.html 打开左下角的 服务端 关闭这个就可以了

  3. grep命令经常使用參数及使用方法

    1.grep介绍 grep命令是Linux系统中一种强大的文本搜索工具,它能使用正則表達式搜索文本.并把匹 配的行打印出来.grep全称Global Regular Expression Print, ...

  4. UVA 10700 Camel trading 无括号的表达式 贪心

    题意:给出只包含数字和+*的表达式,你可以自己安排每一个运算的顺序,让你找出表达式可能得到的最大值和最小值. 很明显,先乘后加是最小值,先加后乘能得到最大值. 其实不是很明显... 证明下: 数字的范 ...

  5. es6(const、let)

    首先我很好奇,明明现代浏览器支持ES6.ES7不是那么好,为何还推行? var let const 有何区别?它们之间的限制又是什么?且听我娓娓道来 1. var 和let的关系,为何推荐let? ( ...

  6. Oracle function实现根据输入的日期以及天数,获取此日期之后的天数的工作日

    前提:在法定节日表(t_fdjr )中维护法定节日包括周六周天 /** * 功能描述:根据输入的日期以及天数,获取此日期之后的天数的工作日 * 输入参数: * i_date YYYY-MM-DD * ...

  7. java多线程解决应用挂死的问题

    这两天为了定位JBOSS老是挂死的问题,学习了一下JAVA多线程方面的知识,在此总结一下 1.在Java程序中,JVM负责线程的调度.线程调度是指按照特定的机制为多个线程分配CPU的使用权. 调度的模 ...

  8. 对opencv MeanShift 融合矩形框的改进

    OPENCV 中的代码改进.当然要依据自己的实际情况来,OPENCV 中行人检測有两种矩形框的融合算法.这里仅仅对meanshift 方法做改进 假设有更好的方法.希望能够跟我讲下. 对于去除重合部分 ...

  9. 8、java内部类

    一.基本介绍 内部类是指在一个外部类的内部再定义一个类.类名不需要和文件夹相同. 内部类可以是静态static的,也可用public,default,protected和private修饰:而外部顶级 ...

  10. 如何让bat,cmd文件后台运行?如何把文件打包成EXE?

    方法1:在“运行”中输入IEXPRESS        这是WINDOWS自带的打包程序,好像也可以生成安装包. 下一步-下一步-随便填个名字(下一步)-下一步-下一步-ADD(选好你的BAT文件 继 ...