热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql从头学一1.0常用函数

字符串函数函数功能CANCAT(S1,S2,…Sn)连接S1,S2,…Sn为一个字符串INSERT(str,x,y,instr)将字符串str从第x位置开始,y个字符

字符串函数

函数

功能

CANCAT(S1,S2,…Sn)

连接 S1,S2,…Sn 为一个字符串

INSERT(str,x,y,instr)

将字符串 str 从第 x 位置开始,y 个字符长的子串替换为字符串 instr

LOWER(str)

将字符串 str 中所有字符变为小写

UPPER(str)

将字符串 str 中所有字符变为大写

LEFT(str ,x)

返回字符串 str 最左边的 x 个字符

RIGHT(str,x)

返回字符串 str 最右边的 x 个字符

LPAD(str,n ,pad)

用字符串 pad 对 str 最左边进行填充,直到长度为 n 个字符长度

RPAD(str,n,pad)

用字符串 pad 对 str 最右边进行填充,直到长度为 n 个字符长度

LTRIM(str)

去掉字符串 str 左侧的空格

RTRIM(str)

去掉字符串 str 行尾的空格

REPEAT(str,x)

返回 str 重复 x 次的结果

REPLACE(str,a,b)

用字符串 b 替换字符串 str 中所有出现的字符串 a

STRCMP(s1,s2)

比较字符串 s1 和 s2

TRIM(str)

去掉字符串行尾和行头的空格

SUBSTRING(str,x,y)

返回从字符串 str x 位置起 y 个字符长度的字串

 

5.2 数值函数

MySQL 中另外一类很重要的函数就是数值函数,这些函数能处理很多数值方面的运算。可以想象,如果没有这些函数的支持,用户在编写有关数值运算方面的代码时将会困难重重,举个例子,如果没有 ABS 函数的话,如果要取一个数值的绝对值,就需要进行好多次判断才能返回这个值,而数字函数能够大大提高用户的工作效率。表 5-2 中列出了在 MySQL 中会经常使用的数值函数。

 表 5-2                                        MySQL 中的常用数值函数

函数

功能

ABS(x)

返回 x 的绝对值

CEIL(x)

返回大于x的最大整数值

FLOOR(x)

返回小于 x 的最大整数值

MOD(x,y)

返回 x/y 的模

RAND()

返回 0 到 1 内的随机值

ROUND(x,y)

返回参数 x 的四舍五入的有 y 位小数的值

TRUNCATE(x,y)

返回数字 x 截断为 y 位小数的结果

 

 

5.3 日期和时间函数

有时我们可能会遇到这样的需求:当前时间是多少、下个月的今天是星期几、统计截止到当前日期前 3 天的收入总和等。这些需求就需要日期和时间函数来实现,表 5-3 列出了 MySQL 中支持的一些常用日期和时间函数。

表 5-3                                               MySQL 中的常用日期时间函数

函数

功能

CURDATE()

返回当前日期

CURTIME()

返回当前时间

NOW()

返回当前的日期和时间

UNIX_TIMESTAMP(date)

返回日期 date 的 UNIX 时间戳

FROM_UNIXTIME

返回 UNIX 时间戳的日期值

WEEK(date)

返回日期 date 为一年中的第几周

YEAR(date)

返回日期 date 的年份

HOUR(time)

返回 time 的小时值

MINUTE(time)

返回 time 的分钟值

MONTHNAME(date)

返回 date 的月份名

DATE_FORMAT(date,fmt) 

返回按字符串 fmt 格式化日期 date 值

DATE_ADD(date,INTERVAL expr type)

返回一个日期或时间值加上一个时间间隔的时间值

DATEDIFF(expr,expr2)

返回起始时间 expr 和结束时间 expr2 之间的天数

 

下面结合一些实例来逐个讲解每个函数的使用方法。

  1. CURDATE()函数:返回当前日期,只包含年月日。

mysql> select CURDATE();

+------------+

| CURDATE()  |

+------------+

| 2007-07-11 |

+------------+

1 row in set (0.03 sec)

 

  1. DATE_FORMAT(date,fmt)函数:按字符串 fmt 格式化日期 date 值,此函数能够按指定的格式显示日期,可以用到的格式符如表 5-4 所示。表 5-4     MySQL 中的日期时间格式

格式符

格式说明

%S,%s 

两位数字形式的秒(00,01,...,59)

%i 

两位数字形式的分(00,01,...,59)

%H

两位数字形式的小时,24 小时(00,01,...,23)

%h,%I 

两位数字形式的小时,12 小时(01,02,...,12)

%k 

数字形式的小时,24 小时(0,1,...,23)

%l

数字形式的小时,12 小时(1,2,...,12)

%T 

24 小时的时间形式(hh:mm:ss)

%r

12 小时的时间形式(hh:mm:ssAM 或 hh:mm:ssPM)

%p 

AM 或 PM

%W 

一周中每一天的名称(Sunday,Monday,...,Saturday)

%a

一周中每一天名称的缩写(Sun,Mon,...,Sat)

%d

两位数字表示月中的天数(00,01,...,31)

%e

数字形式表示月中的天数(1,2,...,31)

%D 

英文后缀表示月中的天数(1st,2nd,3rd,...)

%w

以数字形式表示周中的天数(0=Sunday,1=Monday,...,6=Saturday)

%j

以3位数字表示年中的天数(001,002,...,366)

%U

周(0,1,52),其中 Sunday 为周中的第一天

%u

周(0,1,52),其中 Monday 为周中的第一天

%M 

月名(January,February,...,December)

%b

缩写的月名(January,February,...,December)

%m

两位数字表示的月份(01,02,...,12)

%c

数字表示的月份(1,2,...,12)

%Y

4位数字表示的年份

%y

两位数字表示的年份

%%

直接值“%”

下面的例子将当前时间显示为“月,日,年”格式:

mysql> select DATE_FORMAT(now(),'%M,%D,%Y');

+-------------------------------+

| DATE_FORMAT(now(),'%M,%D,%Y') |

+-------------------------------+

| July,11th,2007                |

+-------------------------------+

1 row in set (0.00 sec)

  1. DATE_ADD(date,INTERVAL expr type)函数:返回与所给日期 date 相差 INTERVAL 时间段的日期。

其中 INTERVAL 是间隔类型关键字,expr 是一个表达式,这个表达式对应后面的类型,type 是间隔类型,MySQL 提供了 13 种间隔类型,如表 5-5 所示。

表 5-5                                               MySQL 中的日期间隔类型

表达式类型

描述

格式

HOUR

小时

hh

MINUTE

mm

SECOND

ss

YEAR

YY

MONTH

MM

DAY

DD

YEAR_MONTH

年和月

YY-MM

DAY_HOUR

日和小时

DD hh

DAY_MINUTE

日和分钟

DD hh:mm

DAY_ SECOND

日和秒

DD hh:mm:ss

HOUR_MINUTE

小时和分

hh:mm

HOUR_SECOND

小时和秒

hh:ss

MINUTE_SECOND

分钟和秒

mm:ss

来看一个具体的例子,在这个例子中第 1 列返回了当前日期时间,第 2 列返回距离当前日期 31 天后的日期时间,第 3 列返回距离当前日期一年两个月后的日期时间。

mysql> select now() current,date_add(now(),INTERVAL  31 day) after31days, date_add(now(),INTERVAL  '1_2' year_month) after_oneyear_twomonth;

+---------------------+---------------------+------------------------+

| current             | after31days         | after_oneyear_twomonth |

+---------------------+---------------------+------------------------+

| 2007-09-03 11:30:48 | 2007-10-04 11:30:48 | 2008-11-03 11:30:48    |

+---------------------+---------------------+------------------------+

1 row in set (0.01 sec)

同样也可以用负数让它返回之前的某个日期时间,如下第 1 列返回了当前日期时间,第 2 列返回距离当前日期 31 天前的日期时间,第 3 列返回距离当前日期一年两个月前的日期时间。

mysql> select now() current,date_add(now(),INTERVAL  -31 day) after31days,date_a dd(now(),INTERVAL  '-1_-2' year_month) after_oneyear_twomonth;

+---------------------+---------------------+------------------------+

| current             | after31days         | after_oneyear_twomonth |

+---------------------+---------------------+------------------------+

| 2007-09-03 11:36:35 | 2007-08-03 11:36:35 | 2006-07-03 11:36:35    |

+---------------------+---------------------+------------------------+ 1 row in set (0.00 sec)

 

l    DATEDIFF(date1,date2)函数:用来计算两个日期之间相差的天数。下面的例子计算出当前距离 2008 年 8 月 8 日的奥运会开幕式还有多少天:

mysql> select DATEDIFF('2008-08-08',now());

+------------------------------+

| DATEDIFF('2008-08-08',now()) |

+------------------------------+

|                          328 | 

+------------------------------+ 1 row in set (0.01 sec)


推荐阅读
  • 在MySQL中实现时间比较功能的详细解析与应用
    在MySQL中实现时间比较功能的详细解析与应用。本文深入探讨了MySQL中时间比较的实现方法,重点介绍了`UNIX_TIMESTAMP`函数的应用。该函数可以接收一个日期时间参数,也可以不带参数使用,其返回值为Unix时间戳,便于进行时间的精确比较和计算。此外,文章还涵盖了其他相关的时间处理函数和技巧,帮助读者更好地理解和掌握MySQL中的时间操作。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 数据类型和操作数据表2.1MySQL类型之整型2.2MySQL数据类型之浮点型2.3日期时间型DATE1支持时间:1000年1月1日~9999年12月31日DATETIME ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • MyISAM和InnoDB是MySQL中最为广泛使用的两种存储引擎,每种引擎都有其独特的优势和适用场景。MyISAM引擎以其简单的结构和高效的读取速度著称,适用于以读操作为主、对事务支持要求不高的应用。而InnoDB引擎则以其强大的事务处理能力和行级锁定机制,在需要高并发写操作和数据完整性的场景下表现出色。选择合适的存储引擎应综合考虑业务需求、性能要求和数据一致性等因素。 ... [详细]
  • 本文深入探讨了MySQL数据库设计的核心概念与实用技巧,重点讲解了数据库设计的三范式。第一范式要求每个表都应具备主键,并确保所有字段具有原子性,即不可再进一步分割。第二范式则在此基础上进一步规范,确保所有非主键字段完全依赖于主键,避免部分依赖带来的数据冗余问题。第三范式则进一步消除传递依赖,确保非主键字段之间不存在依赖关系,从而提高数据的一致性和完整性。通过这些范式的应用,可以有效提升数据库的设计质量和性能。 ... [详细]
  • 本文总结并深入探讨了MySQL中谓词选择性的解析方法及其在函数应用中的实例分析。首先,详细介绍了算术函数,特别是NUMERIC数据类型,该类型在多数数据库管理系统中广泛应用,用于精确表示数值数据,包括指定总体位数和小数位数。此外,文章还结合实际案例,分析了如何利用这些函数优化查询性能,提高数据处理效率。 ... [详细]
  • C# 中 SQLite 报错:在 "\\s\\" 附近出现语法错误,如何解决? ... [详细]
  • 在HTML布局中,即使将 `top: 0%` 和 `left: 0%` 设置为元素的定位属性,浏览器中仍然会出现空白填充。这个问题通常与默认的浏览器样式、盒模型或父元素的定位方式有关。为了消除这些空白,可以考虑重置浏览器的默认样式,确保父元素的定位方式正确,并检查是否有其他CSS规则影响了元素的位置。 ... [详细]
  • 本文详细介绍了在 Oracle 数据库中使用 MyBatis 实现增删改查操作的方法。针对查询操作,文章解释了如何通过创建字段映射来处理数据库字段风格与 Java 对象之间的差异,确保查询结果能够正确映射到持久层对象。此外,还探讨了插入、更新和删除操作的具体实现及其最佳实践,帮助开发者高效地管理和操作 Oracle 数据库中的数据。 ... [详细]
  • 如何有效防御网站中的SQL注入攻击
    本期文章将深入探讨网站如何有效防御SQL注入攻击。我们将从技术层面详细解析防范措施,并结合实际案例进行阐述,旨在帮助读者全面了解并掌握有效的防护策略。希望本文能为您的网络安全提供有益参考。 ... [详细]
  • 在将Excel数据导入MySQL数据库的过程中,如何确保不会生成重复记录?本文介绍了一种方法,通过PHP脚本检查数据库中是否存在相同的“Code”字段值,从而避免重复记录的产生。该方法不仅提高了数据导入的准确性,还增强了系统的健壮性。 ... [详细]
author-avatar
风过无痕啦啦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有