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 ...
随机推荐
- .NET 黑魔法 - asp.net core 身份认证 - Policy
身份认证几乎是每个项目都要集成的功能,在面向接口(Microservice)的系统中,我们需要有跨平台,多终端支持等特性的认证机制,基于token的认证方式无疑是最好的方案.今天我们就来介绍下在.Ne ...
- 一 django框架?
Django-1 一 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞 ...
- GCD(Swift)
1.取消过去的接口 说起 GCD, 大家肯定回想起类似 dispatch_async 这样的语法. GCD 的这个语法模式无论是和 Objc 还是 Swift 的整体风格都不太打掉. 所以 Swift ...
- ModelState查看错误字段的信息
if (!ModelState.IsValid) { List<string> sb = new List<string>(); //获取所有错误的Key List<st ...
- Factory Method
Question:Based on the previous article,what could you do if we must add an extra function? For exam ...
- 基于word2vec训练词向量(一)
转自:https://blog.csdn.net/fendouaini/article/details/79905328 1.回顾DNN训练词向量 上次说到了通过DNN模型训练词获得词向量,这次来讲解 ...
- Hive中变量的使用
1.Hive配置属性 (1)命令行方式 Hive配置属性存储于 hiveconf 命名空间中,该命名空间中的属性是可读写的.在查询语句中插入 '${hiveconf:变量名}',就可以通过 hive ...
- 在hue中使用hive
一.创建新表 建表语句如下: CREATE TABLE IF NOT EXISTS user_collection_9( user_id string , seller_id string , pro ...
- C# CheckBox与RadioButton
通常RadioBox称为单选按钮,CheckBox称为多选按钮,这两个控件都是从ButtonBase类中派生,可以将其视为按钮. 多个checkBox之间的选择是互相独立的,互补影响.多个RadioB ...
- MongoDB遇到的疑似数据丢失的问题。不要用InsertMany!
最近做数据备份的时候发现了有个很严重的问题,那就是数据丢失(最后证明没丢,是别的问题造成的). 问题如下: 我通过两种方式在两个mongoDB集群中,对一组collection进行备份,最后2个备份数 ...