mysql的数据类型- 特别是表示日期/时间的数据类型: 参考: http://www.cnblogs.com/bukudekong/archive/2011/06/27/2091590.html
通常认为:
日期 就是 年-月-日:
时间就是: 小时:分钟:秒
要严格区分"日期"和 "时间"的 说法. 日期就是日期, 时间就是时间, 两者是不同的!!
日期和时间类型
在处理日期和时间类型的值时,MySQL 带有 5 个不同的数据类型可供选择。它们可以被分成简单的日期、时间类型,和混合日期、时间类型。
根据要求的精度,子类型在每个分类型中都可以使用, 并且 MySQL 带有 内置功能 可以把多样化的输入格式变为一个标准格式。
注意这里的 内置功能, 可以把多样化的输入格式 转变为一个标准格式, 比如下面的插入中, 日期格式字符串使用了: -, 2000/01/02, 2000|3|04 等格式, mysql都能转换为标准的 2000-01-02格式:

甚至你设置的 时间格式字符串 的分隔符 很 "过分", "很杂乱" 它都能 转换为标准格式, 但是 还是 最好的使用 标准 格式 来输入, 避免不必要的转换和 不可预测的错误:

类型 大小 (字节) 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值 (yyyy mm dd一个存储为一个字节, 中间的 横线并不存储??)
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值 (中间还要存储2 个表示 分割的 字节符号)
TIMESTAMP 8 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳
DATE、TIME 和 TEAR 类型
MySQL 用 DATE 和 TEAR 类型存储简单的日期值,使用 TIME 类型存储时间值。 表示方法: 这些类型可以描述为字符串或不带分隔符的整数序列。 如果描述为字符串,DATE 类型的值应该使用 连字号 作为分隔符分开,而 TIME 类型的值应该使用冒号作为分隔符分开。
一定要有这样的认识: 一个字符序列, 如果要表示数字, 就要从 字面上看出是一个合法的数字; 如果是字符串,就要加上引号; 否则, mysql就会当做 变量/或字段 来看. 而报错, 所以 表示 日期/时间的 值, 一定要用 字符串 , 用引号阔气来, 带 - 和 : 分隔符.
需要注意的是,没有冒号分隔符的 TIME 类型值,将会被 MySQL 理解为持续的时间,而不是时间戳。
MySQL 还对日期的年份中的两个数字的值,或是 SQL 语句中为 TEAR (year????) 类型输入的两个数字进行最大限度的通译。因为所有 TEAR 类型的值必须用 4 个数字存储。MySQL 试图将 2 个数字的年份转换为 4 个数字的值。把在 00-69 范围内的值转换到 2000-2069 范围内。把 70-99 范围内的值转换到 1970-1979 之内。如果 MySQL 自动转换后的值并不符合我们的需要,请输入 4 个数字表示的年份。
DATEYIME 和 TIMESTAMP 类型
除了日期和时间数据类型,MySQL 还支持 DATEYIME 和 TIMESTAMP 这两种混合类型。它们可以把日期和时间作为单个的值进行存储。这两种类型通常用于自动存储包含当前日期和时间的时间戳,并可在需要执行大量数据库事务和需要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用。
如果我们对 TIMESTAMP 类型的字段没有明确赋值,或是被赋与了 null 值。MySQL 会自动使用系统当前的日期和时间来填充它。
注意, mysql中, 要获得日期/时间, 没有 单独 的date(), time()函数 , 而是 用 now () 函数, 或者 current_timestamp()函数或 内置系统/状态变量: current_timestamp. 注意timestamp变量返回的结果是一个整数值.


用来表示// 或者 设置// 返回 结果 的 日期的标准格式, 总是: 'YYYY-mm-dd' , 表示 时间的标准格式总是: 'HH:ii:ss' , 而 datetime类型的标准格式总是: "YYYY-mm-dd H:i:s"
mysql时间函数很多, 主要只记住两个函数 就好了:
一是, 从已有的日期/时间值(是字符串格式的), 提取/获取某个 年份/ 月份/ 时间等的, 函数 是: time_format, date_format('datevalue', 'format_string'), 格式字符串, 如同 C语言中的 格式字符串是一样的, 比如c语言中, %d %s %c, 这里的格式字符串包括 "%Yy%m%d %H %i%s" ...
二是, 将字符串 转换为 日期/时间类型变量: str_to_date('普通的字符串', '对应的日期/时间格式字符串, 包括一些分隔符 也要对应着写')...
str_to_date('2010-01-02', '%Y-%m-%d'); str_to_date('10/08/2000' , '%m/%d/%Y')...
关于 日期/时间 操作的一些实例:
MariaDB [test]> select * from foo where name='jac';
+----+------+------------+
| id | name | when (date类型) | // 插入now() 的时候, 会自动 截取前面的日期.
+----+------+------------+
| 17 | jac | 2017-11-11 |
+----+------+------------+
1 row in set (0.00 sec)
*由上可以看出, select 后面 总是接 "输出echo, print"的内容, 可以是 变量, 数字, 字符串 , 或字段, 所以 这里的 表示的是 "所有的 字段" 注意是 字段,不是 记录行 **
关于数据库中的 用户和权限?

- 一个完整的用户, 应该是 用户+主机, 即 username@host, 比如, 用 select user() 的输出就是 root@localhost
MariaDB [(none)]> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
- ::1 是ip6 的本地回环地址, 相当于127.0.0.1, 是ipv6的本地ip地址
- localhost 是通过 "本地的" /var/lib/mysql/mysql.sock 的套接字来连接的, 而127.1 是通过 TCP/IP 网络网卡 来连接的.
为什么mysql上有那么多的 root用户?
在mysql上要标识一个用户, 要通过 用户名@host 来标识. 这么多的 root账号, 是因为他们的 host 不同:
- localhost, 叫做 本地 主机, 注意是 本地 不是本机 , 就是说 是你就在 当前这个机器旁边, 这个机器上的. localhost也叫local, 它是不经过 网卡的, 不受网络防火墙和网卡的限制的;
- 127.1 , 叫本机 主机, 是本机 服务器, 实际上是一个 网络地址, 是要 受 防火墙和 网卡的 限制的;
- ::1 , 类似 于 127.1, 只不过 是ip v6, 访问 127.1, 实际上 是经过 网络网卡 的传输, 有数据包的传递, 只不过是: 本地(客户端)的数据包, 经过网卡 传输到 本机服务器.
- 而 localhost.localdomain, 则是一个 标准的 网络域名了, 类似于 www_example_com. 是要经过TCP/IP的网卡/ 网络传输的.
也就是说, 这四种 host都是不同的,有区别 的, 所以 这些mysql 账户 自然就是有区别的


mysql的匿名 用户?
- 匿名用户就是 user='', 用户名为空的用户, 或者叫做 "Any" 的用户
- 匿名用户的权限是 usage [ju:'sid3], 实际上, 就是没有任何权限 的本地用户 : grant usage on . to ''@'localhost'
- 可以删除匿名用户( 即空用户, any用户): delete from mysql.user where user=''
mysql的数据类型- 特别是表示日期/时间的数据类型: 参考: http://www.cnblogs.com/bukudekong/archive/2011/06/27/2091590.html的更多相关文章
- mysql学习笔记--- 字符串函数、日期时间函数
一.常见字符串函数: 1.CHAR_LENGTH 获取长度(字符为单位) 2.FORMAT 格式化 3.INSERT 替换的方式插入 4.INSTR 获取位置 5.LEFT/RIGHT 取左 ...
- Mysql基本类型(五种年日期时间类型)——mysql之二
转自:<MySQL技术内幕:时间和日期数据类型> http://tech.it168.com/a2012/0904/1393/000001393605_all.shtml
- mysql 将时间戳直接转换成日期时间
date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串 后面的 '%Y%m%d' 主要是将返回值格式化 例如: mysql>SELECT FROM ...
- Mysql创建、删除用户、用户管理等相关:转载http://www.cnblogs.com/fly1988happy/archive/2011/12/15/2288554.html
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 ...
- SQL日期格式转换(经常用又经常忘记的东西)转载自http://www.cnblogs.com/wangyuelang0526/archive/2012/06/06/2538224.html
Select CONVERT(varchar(100), GETDATE(), 8):14:53:14Select CONVERT(varchar(100), GETDATE(), 9): 06 6 ...
- mysql日期时间类型总结
MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ------------ ---- ...
- Mysql 建表时,日期时间类型选择
mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 D ...
- MySQL之日期时间类型
mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 D ...
- MySQL建表时,日期时间类型选择
MySQL(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 D ...
随机推荐
- centos安装java的jdk
1.下载 jdk-8u101-linux-x64.rpm http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads- ...
- uvm设计分析——callback
uvm_callback,设计者在进行class的function设计时,有意留下的一些hook,总是遍历某个pool中的对象: 使用者在使用时,将实现添加到某个pool中: callback中,最重 ...
- 33网络通信之Epoll模型
多路复用并发模型 -- epoll 监控事件 events EPOLLIN fd可读 EPOLLOUT fd可写 EPOLLPRI ...
- 【转】python3实现自动化框架robotframework
由于python2只更新到2020年,python3是未来的主流,为了适应技术的变化python3实现robotframework是迟早的事 1.下载最新版本的python3.7,可根据自己电脑的位数 ...
- Java集合-----List详解
List中的元素是有序排列的而且可重复 1.LinkedList LinkedList是非线程安全的,底层是基于双向链表实现的 LinkedList常用方法: toArray() ...
- 排序(Sort)-----选择排序
声明:文中动画转载自https://blog.csdn.net/qq_34374664/article/details/79545940 1.选择排序简介 选择排序(Select Sort ...
- 文件、文件夹操作(I)
遍历一个目录下的所有文件 首先我们获取用户文档目录路径 let manager = FileManager.default let urlForDocument = manager.urls(for: ...
- 利用可排序Key-Value DB构建时间序列数据库(简论)
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/5855064. ...
- Log4J基础详解及示例大全(转)
log4j可以通过使用配置文件的方式进行配置. 配置步骤如下: 1.定义日志组件logger 每个logger都可以拥有一个或者多个appender,每个appender表示一个日志的输出目的地,比如 ...
- 利用sqoop将hive数据导入导出数据到mysql
一.导入导出数据库常用命令语句 1)列出mysql数据库中的所有数据库命令 # sqoop list-databases --connect jdbc:mysql://localhost:3306 ...