mysql时间函数

如何选择合适的MySQL数据类型

浪尽此生 提交于 2019-11-28 07:14:51
MySQL数据类型选择 一 .选择原则 更小的通常更好 :一般情况下选择可以正确存储数据的最小数据类型。越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小。 简单就好 :简单的数据类型的操作通常需要更少的CPU周期。例如:整型比字符操作代价要小得多,因为字符集和校对规则(排序规则)使字符比整型比较更加复杂。 尽量避免NULL :尽量制定列为NOT NULL,除非真的需要NULL类型的值。因为可能为NULL列使得索引,索引统计和值比较都更复杂。可为NULL的列会使用更多的存储空间,在MySQL里也需要特殊处理。 二.选择具体数据类型 在选择列的数据类型时需要先选定合适的大类型,如:数字,字符串,时间等。 整数类型 有两种类型的数字:整数和实数。如果需要存储整数,可以选择一下集中数据类型: 数据类型 长度/字节 范围 说明 TINYINT 1 -2^7—2^7-1 整数类型可选UNSIGND属性 SMALLINT 2 -2^15—2^15-1 表示不允许为负值 MEDIUMINT 3 -2^23—2^23-1 这大致可以使整数上限提高一倍 INT 4 -2^31—2^31-1 例如UNSIGNED可以使TINYINT BIGINT 8 -2^63—2^63-1 存储的范围是0—255 *实数类型 实数是带有小数部分的数字。然而它们不只是存储小数部分

【MySQL】【11】DATE_SUB() 从日期减去指定的时间间隔

最后都变了- 提交于 2019-11-28 04:55:24
前言: DATE_SUB(date, INTERVAL expr type):date 是合法的日期表达式,expr 是时间间隔, type是时间类型 正文: -- 前一年的数据 date_sub(now(), interval 1 year) select * from table where year(created) = year(date_sub(now(), interval 1 year)); Type 值 MICROSECOND SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR SECOND_MICROSECOND MINUTE_MICROSECOND MINUTE_SECOND HOUR_MICROSECOND HOUR_SECOND HOUR_MINUTE DAY_MICROSECOND DAY_SECOND DAY_MINUTE DAY_HOUR YEAR_MONTH 参考博客: MySQL DATE_SUB() 函数 https://www.w3school.com.cn/sql/func_date_sub.asp 来源: https://www.cnblogs.com/huashengweilong/p/11387287.html

mysql关于时间

烈酒焚心 提交于 2019-11-28 02:46:01
1:查看当前时间    2:字符串 与 时间 与时间戳的转换   -- 时间转字符串   select date_format(now(), '%Y-%m-%d %H:%i:%s') as now;   -- 字符串转时间   select str_to_date('2018-05-02 23:59:30','%Y-%m-%d %H');   -- 时间转时间戳   select unix_timestamp(now()) as TIMESTAMP;   -- 时间戳转时间   select from_unixtime(1525263383) as TIME;   -- 字符串转时间戳   select unix_timestamp('2018-05-02');   -- 时间戳转字符串   select from_unixtime(1525263383, '%Y-%m-%d %H:%i:%s'); 3:mysql时间加一天 与 减一天   MySQL 为日期增加一个时间间隔:date_add()   now() //now函数为获取当前时间   select date_add(now(), interval 1 day); - 加1天   select date_add(now(), interval 1 hour); -加1小时   select date_add(now(),

mysql-创建函数,存储过程以及视图

[亡魂溺海] 提交于 2019-11-28 02:07:31
1.创建函数 mysql>delimiter // mysql>create function 函数名(参数1 参数1类型,...) returns 返回类型 >begin >return 返回值; >end >// mysql>select 函数名(参数1, 参数2, 。。。); >// 创建存数过程 建表 create table user( id mediumint(8) unsigned not null auto_increment, name char(15) not null default "", pass char(32) not null default "", note text not null, primary key (id) )engine=Innodb charset=utf8; insert into user(nsme, pass, note) values('sss','123', 'ok'); 存储过程 mysql>delimiter // mysql>create procedure proc_name (in parameter integer) mysql>begin mysql>if parameter=0 then mysql>select * from user order by id asc; mysql>else mysql

Mysql小技巧(多行数据合并+模糊查询

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-28 00:53:21
1.多行数据合并 使用GROUP_CONCAT函数后的效果 需注意: 1.GROUP_CONCAT()中的值为你要合并的数据的字段名;  SEPARATOR 函数是用来分隔这些要合并的数据的;  ' '中是你要用哪个符号来分隔; 2.必须要用GROUP BY 语句来进行分组管理,不然所有的数据都会被合并成一条记录 2.模糊查询 关于条件,SQL提供了四种匹配模式: 1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。 另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件 SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%' 若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%' 虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。 2,_ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句: 比如 SELECT * FROM [user] WHERE u

【数据库】MySQL 函数大全包含示例(涵盖了常用如时间、数字、字符串处理、数据流函数的和一些冷门的)

末鹿安然 提交于 2019-11-28 00:33:30
ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/mysqlFunctionDesc 数学函数(Mathematical Functions) 函数名 描述 示例 ABS(X) 绝对值 SELECT ABS(-2); -> 0 ACOS(X) 反余弦值 SELECT ACOS(1); -> 0 ASIN(X) 反正弦值 SELECT ASIN(0.2); -> 0.20135792079033 ATAN(X) 反正切值 SELECT ATAN(2); -> 1.1071487177941 ATAN(Y,X), ATAN2(Y,X) 反正切值(两个参数), 类似于求Y/X的反正切值 SELECT ATAN(-2,2); -> -0.78539816339745; CEIL(X),CEILING(X) 求不小于X的最小整数 SELECT CEILING(1.23); -> 2 CONV(N,from_base, to_base) 将数据N从from_base进制转化 成to_base进制 SELECT CONV(2,10,2); ->10 COS(X) 余弦值 SELECT COS(PI()); -> -1 COT(X) 余切值 SELECT COT(12); -> -1

mysql常用时间函数

怎甘沉沦 提交于 2019-11-27 12:59:41
昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 7天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名) 近30天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名) 本月 SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' ) 上一月 SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1 来源: https://blog.csdn.net/New_CJ/article/details/99678248

mysql中SQL执行过程详解

半腔热情 提交于 2019-11-27 11:41:42
mysql执行一个查询的过程,到底做了些什么: 客户端发送一条查询给服务器; 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段。 服务器段进行SQL解析、预处理,在优化器生成对应的执行计划; mysql根据优化器生成的执行计划,调用存储引擎的API来执行查询。 将结果返回给客户端。 实际上mysql执行的每一步都比较复杂,具体的过程如下 第一步 : mysql客户端和服务器通讯 1. 通讯 mysql客户端和服务器之间的通讯协议是“半双工”的,这意味着,在任何一个时刻,要么由服务器向客户端发送数据,要么由客户端向服务器发送数据,这两个动作不能同时发生。这种协议让mysql通信简单快速,但也限制了mysql。一个明显的限制是,这意味着没办法进行流量限制。一旦一端开始发生消息,另一端要接收完整个消息才能响应他。 客户端用一个单独的数据包将查询传给服务器。一旦客户端发送了请求,他能做的事情就只是等待结果了。 相反的,一般服务器响应给用户的数据通常很多,由多个数据包组成。当服务器开始响应客户端请求时,客户端必须完整的接受整个返回结果,而不是简单的只收取前面几条结果,然后让服务器停止发送数据。 多数连接mysql的库函数都可以获得全部结果并缓存到内存里,还可以逐行获取所需要的数据。默认一般是获得全部结果并缓存到内存中

MySQL存储过程详解(正文)

若如初见. 提交于 2019-11-27 11:26:31
我们常用的操作数据库语言 SQL 语句在执行的时候需要要先编译,然后执行,而存储过程( Stored Procedure )是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有 SQL 语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。 存储过程通常有以下优点: (1). 存储过程增强了 SQL 语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2). 存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的 SQL 语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3). 存储过程能实现较快的执行速度。如果某一操作包含大量的 Transaction-SQL 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的

mysql中函数与聚集函数

喜欢而已 提交于 2019-11-27 08:14:59
函数 文本处理函数 字段清理 去掉空格 去掉两边的空格 Trim(字段) 去掉左边空格 LTrim(字段) 去掉右边空格 RTrime(字段) 类似的很多 挑几例 找子串 Locate() 返回字符串的SOUNDEX值 Soundex() 时间处理函数 有些字段储存的时间类型 datetime 里面包含了日期和日期那天的 时分秒 有时候我们想仅仅根据日期查 那么就可以用 Date() WHERE Date(datetime类型字段) = '2015-10-9'; 相应的还有Time() 数字处理函数 取绝对值 Abs() 取余弦 Cos() …… 聚集函数 概念 运行在行组上 行组也就是很多行 基本也可以理解为一列 计算和返回 单个值 的函数 函数 返回某列平均值 AVG() 返回某列行数 COUNT() 例子,其他的函数类似 SELECT COUNT(*) AS num_cust 总是在SELECT后面 * 是全部行都统计 如果是COUNT(cust_mail) 那么没有cust_mail的就不会计算 对于某些列 有些行是 null 的 光是聚集一个值,那么这值还是没有名字的 不好引用 为此也得AS 名字 FROM customers; 返回某列最大值 MAX() 返回某列最小值 MIN() 返回某列之和 SUM() 标准偏差函数 用时候再查 唯一 聚集 来由