mysql时间函数

MYSQL中的日期时间转换

為{幸葍}努か 提交于 2019-12-14 10:35:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。 这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。 mysql> select DAYOFWEEK('1998-02-03'); -> 3 WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。 mysql> select WEEKDAY('1997-10-04 22:23:00'); -> 5 mysql> select WEEKDAY('1997-11-05'); -> 2 DAYOFMONTH(date) 返回date的月份中日期,在1到31范围内。 mysql> select DAYOFMONTH('1998-02-03'); -> 3 DAYOFYEAR(date) 返回date在一年中的日数, 在1到366范围内。

Mysql日期函数

落花浮王杯 提交于 2019-12-13 21:32:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1. MySQL 为日期增加一个时间间隔:date_add() set @dt = now(); select date_add( @dt , interval 1 day); - 加1天 select date_add( @dt , interval 1 hour); -加1小时 select date_add( @dt , interval 1 minute); - 加1分钟 select date_add( @dt , interval 1 second); -加1秒 select date_add(@dt, interval 1 microsecond);-加1毫秒 select date_add(@dt, interval 1 week);-加1周 select date_add(@dt, interval 1 month);-加1月 select date_add(@dt, interval 1 quarter);-加1季 select date_add(@dt, interval 1 year);-加1年 MySQL adddate(), addtime()函数,可以用date_add() 来替代。下面是date_add() 实现addtime() 功能示例: mysql > set @dt =

高性能MySQL--总览篇

有些话、适合烂在心里 提交于 2019-12-13 01:00:42
文章为转载: MySQL逻辑架构及性能优化原理   说起MySQL的查询优化,相信所有人都了解一些最简单的技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要。 MySQL逻辑架构   如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。   MySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。   MySQL大多数核心服务均在中间这一层,包括查询解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现:存储过程、触发器、视图等。   最下层为存储引擎,其负责MySQL中的数据存储和提取。和Linux下的文件系统类似,每种存储引擎都有其优势和劣势。中间的服务层通过API与存储引擎通信,这些API接口屏蔽了不同存储引擎间的差异。       每一个客户端发起一个新的请求都由服务器端的连接/线程处理工具负责接收客户端的请求并开辟一个新的内存空间,在服务器端的内存中生成一个新的线程

MySQL基础教程

ⅰ亾dé卋堺 提交于 2019-12-11 16:42:41
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 这是一个基础的MySQL教程,通过教程的学习后可以到达一个初级到中级 MySQL应用水平级别 ,主要介绍一些MySQL中基本的SQL语句。如果这是您第一次使用关系数据库管理系统(之前没有学习SQL相关知识)那么也没有关系,本教程将为您提供使用 MySQL数据库服务器的工作所需知识和示例,如:查询数据,更新数据,管理数据库和创建表等等。 如果已经熟悉其它的关系数据库管理系统,如:PostgreSQL,甲骨文(Oracle),或Microsoft SQL Server等,那么将有助于理解和使用本教程,刷新知识并理解MySQL的SQL语句,看看MySQL与其他数据库系统有怎样的不同。 第1节、开始使用MySQL 本节将帮助您快速使用MySQL。我们将开始安装MySQL,下载一个样本数据库,并将样本数据加载到MySQL服务器中,作为后续示例练习使用。 安装MySQL数据库服务器 - 一步一步演示如何在您的计算机上安装 MySQL 数据库服务器(软件)。 下载MySQL的示例数据库 - 介绍一个MySQL的示例数据库(studymysql)。我们将提供链接下载示例数据库和它的ER图。 加载示例数据库到本地MySQL数据库服务器 – 演示如何将示例数据库(studymysql)加载到MySQL数据库服务器中进行练习。

Mysql 获取每个分组最新的一条数据

做~自己de王妃 提交于 2019-12-10 16:01:23
参考: https://mp.weixin.qq.com/s?src=11&timestamp=1575960750&ver=2025&signature=krnJqqJuFuNzr3XUXCLKyKVBYRS*DaPNAPuRUHPwR8Eb02hu2hQrN5EjP89lQSeoUvfvHfU3lCiAwE*Z7O4uDpCybl46CLxYwQzDYdtbuQTkfgGfroUf8XHeVpMzamfe&new=1 根据ship_id分组,然后根据sta_time排序,取最新的一条数据 select * from s_mon_ship_biz where id in ( select SUBSTRING_INDEX(GROUP_CONCAT(id ORDER BY STA_TIME desc),',',1) from s_mon_ship_biz GROUP BY SHIP_ID ) ORDER BY STA_TIME desc 解释: 通过group_concat函数 先将数据按照日期倒序排序(日期最新的在最前面),然后在group,这样每个分类的第一条肯定是日期最新的。 substring_index函数 substring_index(str,delim,count),str:要处理的字符串、delim:分隔符、count:计数 例子:   SELECT

mysql存储过程procedure

﹥>﹥吖頭↗ 提交于 2019-12-10 08:26:06
1、 存储过程的概念: 所谓的存储过程就是存储在数据库当中的可以执行特定工作(查询和更新)的一组SQL代码的程序段。 2、 存储过程的优点: (1)存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 (2)当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。 (3)存储过程可以重复使用,可减少数据库开发人员的工作量。 (4)安全性高,可设定只有某些用户才具有对指定存储过程的使用权。 3、 关于 MySQL 的存储过程 存储过程是数据库存储的一个重要的功能,但是 MySQL 在 5.0 以前并不支持存储过程,这使得 MySQL 在应用上大打折扣。好在 MySQL 5.0 终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。 4、 mysql存储过程的创建: 格式: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body (1)默认地,子程序与当前数据库关联。要明确地把子程序与一个给定数据库关联起来

MySQL中DATE_FORMAT的使用

陌路散爱 提交于 2019-12-09 21:43:18
DATE_FORMAT:DATE_FORMAT(date,format) 函数用于以不同的格式显示日期/时间数据。date是要转化的日期,format是格式 示例: select DATE_FORMAT ( NOW ( ) , '%Y-%m-%d' ) ; 结果: 2018 - 09 - 12 format格式 格式 描述 %a 缩写星期名 %b 缩写月名 %c 月,数值 %D 带有英文前缀的月中的天 %d 月的天,数值(00-31) %e 月的天,数值(0-31) %f 微秒 %H 小时(00-23) %h 小时(01-12) %I 小时(01-12) %i 分钟,数值(00-59) %j 年的天(001-366) %k 小时(0-23) %l 小时(1-12) %M 月名 %m 月,数值(00-12) %p AM 或 PM %r 时间,12-小时(hh:mm:ss AM 或 PM) %S 秒(00-59) %s 秒(00-59) %T 时间, 24-小时(hh:mm:ss) %U 周(00-53)星期日是一周的第一天 %u 周(00-53)星期一是一周的第一天 %V 周(01-53)星期日是一周的第一天,与 %X 使用 %v 周(01-53)星期一是一周的第一天,与 %x 使用 %W 星期名 %w 周的天(0=星期日, 6=星期六) %X 年,其中的星期日是周的第一天,4 位

MYSQL int类型字段的时间存放和显示 和 php的时间存放函数

泪湿孤枕 提交于 2019-12-07 16:38:14
mysql: ====================== int类型字段的时间存放 UPDATE tablename SET add_time = UNIX_TIMESTAMP(NOW()) int类型字段的时间显示 SELECT FROM_UNIXTIME(add_time) FROM tablename php时间戳函数: ============================== time() 获取当前时间戳 结果:1232553600 strtotime() 转换为时间戳 date('Y-m-d H:i:s',time()) 时间戳转为时间 strtotime(date("Y-m-d")) 转化成年月日格式 echo strtotime("2009-1-22″) 结果:1232553600 ================================= $time_str = 1313994356; echo date('Y-m-d H:i:s',$time_str); 注意时差问题,可使用date_default_timezone_set("PRC");搞定8小时时差问题 来源: oschina 链接: https://my.oschina.net/u/2444569/blog/502652

MySQL timeout调研与实测

喜夏-厌秋 提交于 2019-12-07 11:03:48
说明: 接触网络编程我们不得不提的就是超时,TCP建立连接的超时,数据报文发送/接收超时等等,mysql在超时上也做足了功夫。 Variable_name Default Value connect_timeout 5 interactive_timeout 28800 net_read_timeout 30 net_write_timeout 60 wait_timeout 28800 上面这5个超时是本次调研的重点,当然MySQL绝对不指这5种超时的配置,由于经历和时间有限,本次只谈这5种。 一、 connect_timeout 这个比较好理解,字面上看意思是连接超时。”The number of seconds that the mysqld server waits for a connect packet before responding with Bad handshake”。 MySQL连接一次连接需求经过6次“握手”方可成功,任意一次“握手”失败都有可能导致连接失败,如下图所示。 前三次握手可以简单理解为TCP建立连接所必须的三次握手,MySQL无法控制,更多的受制于不TCP协议的不同实现,后面的三次握手过程超时与connect_timeout有关。简单的测试方法: $time telnet mysql_ip_addr port $ time telnet 127

MYSQL INT格式时间戳转为时间格式

僤鯓⒐⒋嵵緔 提交于 2019-12-07 03:19:57
有时候会直接用到INT结构的时间戳来记录时间(如图), 这时就需要进行转换了 比如我这个数据库,我要删除 3天内 的所有数据 SELECT FROM_UNIXTIME( logtime ) FROM `zz_account_log` where DATE(from_unixtime(logtime,'%Y-%m-%d') )> DATE(CURDATE() - INTERVAL 3 DAY) UNIX_TIMESTAMP(date) 如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数) 可以使用该函数 直接进行对比时间戳 FROM_UNIXTIME ,就是将时间戳转成常用时间格式 SELECT FROM_UNIXTIME(logtime) FROM `zz_account_log` 返回结果: UNIX_TIMESTAMP(date) 如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的 本地时间的一个数字。 代码如下