解析MySQL中存储时间日期类型的选择问题
一般应用中,我们用timestamp,datetime,int类型来存储时间格式:
int(对应javaBean中的Integer或int)
1. 占用4个字节
2. 建立索引之后,查询速度快
3. 条件范围搜索可以使用使用between
4. 不能使用mysql提供的时间函数
结论:适合需要进行大量时间范围查询的数据表
datetime(javaBean中用Date类型)
1. 占用8个字节
2. 允许为空值,可以自定义值,系统不会自动修改其值。
3. 实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)
4. 与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)
5. 不可以设定默认值,所以在不允许为空值的情况下,必须手动指定datetime字段的值才可以成功插入数据。
6. 可以在指定datetime字段的值的时候使用now()变量来自动插入系统的当前时间。
结论:datetime类型适合用来记录数据的原始的创建时间,因为无论你怎么更改记录中其他字段的值,datetime字段的值都不会改变,除非你手动更改它。
timestamp(javaBean中用Date或Timestamp类型)
1. 占用4个字节
2. 允许为空值,但是不可以自定义值,所以为空值时没有任何意义。
3. TIMESTAMP值不能早于1970或晚于2037。这说明一个日期,例如'1968-01-01',虽然对于DATETIME或DATE值是有效的,但对于TIMESTAMP值却无效,如果分配给这样一个对象将被转换为0。
4.值以UTC格式保存( it stores the number of milliseconds)
5.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。
6. 默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。
7. 数据库会自动修改其值,所以在插入记录时不需要指定timestamp字段的名称和timestamp字段的值,你只需要在设计表的时候添加一个timestamp字段即可,插入后该字段的值会自动变为当前系统时间。
8. 以后任何时间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。
结论:timestamp类型适合用来记录数据的最后修改时间,因为只要你更改了记录中其他字段的值,timestamp字段的值都会被自动更新。
总结
以上就是本文关于解析MySQL中存储时间日期类型的选择问题的全部内容,感兴趣的朋友可以参阅:mysql in语句子查询效率慢的优化技巧示例、MYSQL子查询和嵌套查询优化实例解析、MySQL优化之使用连接(join)代替子查询等,有什么问题可以随时留言,小编会及时回复大家。希望对大家有所帮助。
相关推荐
-
mysql 5.7更改数据库的数据存储位置的解决方法
随着MySQL数据库存储的数据逐渐变大,已经将原来的存储数据的空间占满了,导致mysql已经链接不上了.因此,必须要给存放的数据换个地方了.下面是操作过程中的一些步骤.记下来,以后日后查看. 1.修改mysql数据存放的目录 要修改两个地方,其一是修改/etc/my.cnf文件中的datadir.默认情况下: datadir=/var/lib/mysql 因为我的/data/目录比较大,所以将其改为: datadir=/data/mysql/ 还要修改/etc/init.d/mysqld文件,将
-
MySQL实现创建存储过程并循环添加记录的方法
本文实例讲述了MySQL实现创建存储过程并循环添加记录的方法.分享给大家供大家参考,具体如下: 先创建,然后调用: -- 创建存储过程 DELIMITER;// create procedure myproc() begin declare num int; set num=1; while num <= 24 do insert into t_calendar_hour(hourlist) values(num); set num=num+1; end while; commit; end;/
-
mysql 存储过程判断重复的不插入数据
mysql存储过程中 下面是一个较常见的场景,判断表中某列是否存在某值,如果存在执行某操作 需要注意的是不能用if exists; exists可以在where后面或者在create object是使用,但是在if语句中不可以使用,只能用变通的方法. delimiter $$ create procedure proc_add_book(in $bookName varchar(200),in $price float) begin declare $existsFlag int default
-
Mybatis调用MySQL存储过程的简单实现
1.存储过程的简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的.数据库中的存储过程可以看做是对编程中
-
解析MySQL中存储时间日期类型的选择问题
一般应用中,我们用timestamp,datetime,int类型来存储时间格式: int(对应javaBean中的Integer或int) 1. 占用4个字节 2. 建立索引之后,查询速度快 3. 条件范围搜索可以使用使用between 4. 不能使用mysql提供的时间函数 结论:适合需要进行大量时间范围查询的数据表 datetime(javaBean中用Date类型) 1. 占用8个字节 2. 允许为空值,可以自定义值,系统不会自动修改其值. 3. 实际格式储存(Just stores w
-
关于mysql中时间日期类型和字符串类型的选择
目录 一.DATETIME.TIMESTAMP 的用法 1.相同点 2.不同点 3.选择 二.varchar 和 text 数据类型的用法 1.相同点 2.不同点 3.选择 一.DATETIME.TIMESTAMP 的用法 MySQL中有多种表示时间日期的数据类型,主要有YEAR.TIME.DATE.DATETIME.TIMESTAMP等 1.相同点 datetime和timestamp都可以表示 YYYY-MM-DDHH:MM:SS 这种年月日时分秒格式的数据. 2.不同点 datetime存
-
MySQL中存储时间的最佳实践指南
目录 前言 不要使用字符串存储时间类型 MySQL 中的日期类型 DATETIME TIMESTAMEP TIMESTAMP 的性能问题 数值型时间戳(INT) DATETIME vs TIMESTAMP vs INT,怎么选? 总结 前言 平时开发中经常需要记录时间,比如用于记录某条记录的创建时间以及修改时间.在数据库中存储时间的方式有很多种,比如 MySQL 本身就提供了日期类型,比如 DATETIME,TIMESTAMEP 等,我们也可以直接存储时间戳为 INT 类型,也有人直接将时间存储
-
MySQL中的日期时间类型与格式化方式
目录 [1]MySQL中的日期时间类型 ① 详细解释 ② SQL语句实例 ③ timestamp字段 ④ 测试实例 [2]日期时间类型格式化 ① DATE_FORMAT( )函数 ② date_format( ) 转换格式 ③ str_to_date()函数 [1]MySQL中的日期时间类型 MySQL中常用的几种时间类型有:date.datetime.time.year.timestamp 数据类型 占用字节 最小值 最大值 零值表示 date 4 1000-01-01 9999-12-31
-
python3实现往mysql中插入datetime类型的数据
昨天在这个上面找了好久的错,嘤嘤嘤~ 很多时候我们在爬取数据存储的时候都需要将当前时间作为一个依据,在python里面没有时间类型可以直接拿来就用的.我们只需要在存储之前将时间类型稍作修饰就行. datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") 如: #插入产品信息 insert_good_sql = """ INSERT INTO T_GOOD(good_name, good_type, img_
-
全面解析MySQL中的隔离级别
数据库并发的对同一批数据进行增删改,就可能会出现我们所说的脏写.脏读.不可重复读.幻读等一系列问题.MySQL提供了一系列机制来解决事务并发问题,比如事务隔离.锁机制.MVCC多版本并发控制机制.今天来探究一下事务隔离机制. 事务是一组SQL组成的逻辑处理单元,先来看下事务的ACID特性: 原子性(Atomicity) :事务是一个原子操作单元,对数据进行修改,要么全执行要么全不执行.是从执行层面上来描述的. 一致性(Consistent) :在事务开始和完成时,数据都必须保持一致状态.是从执行
-
解决 JScript 中使用日期类型数据时出现类型错误的问题
例如以下代码: 程序代码: 复制代码 代码如下: <%@LANGUAGE="JScript" CODEPAGE="65001"%> <script language="JScript" runat="server"> Response.Cookies("xujiwei")("name") = "xujiwei"; Response.Coo
-
MySQL中的binary类型使用操作
本文主要向大家介绍了MySQL数据库之MySQL的binary类型操作,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 示例数据表: CREATE TABLE test_bin ( bin_id BINARY(16) NOT NULL ) Engine=InnoDB; 插入数据(内容是一个32位的UUID字符串值): INSERT INTO test_bin(bin_id) VALUES(UNHEX('FA34E10293CB42848573A4E39937F479'));
-
mysql中常用日期比较与计算函数
MySql中时间比较的实现 unix_timestamp() unix_timestamp 函数可以接受一个参数,也可以不使用参数. 它的返回值是一个无符号的整数.不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数, 如果 使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970-01-01 00:00:00到指定时间所经历的秒数. 有了这个函数,就可以很自然地把时间比较转换为一个无符号整数的比较. 例如,判断一个时间是否在一个区间内 unix_timestamp
-
C#中DateTime日期类型格式化显示方法汇总
本文汇总了常用的DateTime日期类型格式化显示方法,方便读者在使用的时候参考借鉴一下.具体如下所示: 1.绑定时格式化日期方法: <ASP:BOUNDCOLUMN DATAFIELD= "JoinTime " DATAFORMATSTRING= "{0:yyyy-MM-dd} " > <ITEMSTYLE WIDTH= "18% " > </ITEMSTYLE > </ASP:BOUNDCOLUMN
随机推荐
- swift where与匹配模式的实例详解
- Python实现全角半角转换的方法
- mysql中使用instr进行模糊查询方法介绍
- ComboBox 和 DateField 在IE下消失的解决方法
- vue.js加载新的内容(实例代码)
- js使用正则实现ReplaceAll全部替换的方法
- Spring Boot 添加MySQL数据库及JPA实例
- asp.net GridView控件中模板列CheckBox全选、反选、取消
- JS判断是否在微信浏览器打开的简单实例(推荐)
- 克隆javascript对象的三个方法小结
- asp.net实现在非MVC中使用Razor模板引擎的方法
- PHP函数preg_match_all正则表达式的基本使用详细解析
- 基于Android自定义控件实现刮刮乐效果
- python基础教程之匿名函数lambda
- Python编程入门之Hello World的三种实现方式
- 库名表名大小写问题与sqlserver兼容的启动配置方法
- 解决Default storage engine (InnoDB) is not available导致mysql无法启动的修改办法
- 详解Vue.js之视图和数据的双向绑定(v-model)
- Android图片识别应用详解
- android打开应用所在的市场页面进行评分操作的方法