mysql数据库时间用什么类型的数据(mysql存时间应什么类型)

mysql数据库时间用什么类型的数据(mysql存时间应什么类型),第1张

mysql数据时间用什么类型的数据

Mysql中经常用来存储日期的数据类型有三种:Date、Datetime、Timestamp。

Date数据类型:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”。

Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为“YYYY-MM-DDHH:MM:SS”。支持的时间范围是“1000-00-0000:00:00”到“9999-12-3123:59:59”。

Timestamp类型:也是存储既有日期又有时间的数据。存储和显示的格式跟Datetime一样。支持的时间范围是“1970-01-0100:00:01”到“2038-01-1903:14:07”。

所有不符合上面所述格式的数据都会被转换为相应类型的0值。(0000-00-00或者0000-00-0000:00:00)

参照这个就行了,这个对应注入类型。

===========java注入数据库==========

java类型 mysql类型 成功与否

date date yes

date time no

date timestamp no

date datetime no

time date no

time time yes

time timestamp no

time datetime no

timestamp date yes

timestamp time yes

timestamp timestamp yes

timestamp datetime yes

==========end java注入数据库========

总规律,如果A完全包含B,则A可以向B注入数据,否则报错

==========从数据库提取到java ==========

mysql类型 java类型 成与否

date date yes

date time yes --------------缺少的部分使用历元

date timestamp yes --------------缺少的部分使用历元

time date yes --------------缺少的部分使用历元

time time yes

time timestamp yes --------------缺少的部分使用历元

timestamp date yes

timestamp time yes

timestamp timestamp yes

datetime date yes

datetime time yes

datetime timestamp yes

==========end 从数据库提取到java=======

不会出错,缺少的部分使用历元,而不是当前日期时间

在达梦数据库中,Timestamp类型的数据是不带时区信息的,即不考虑时区的影响。在存储Timestamp类型的数据时,达梦数据库会将其转换为UTC时间(协调世界时),因此不会受到本地时区的影响。 需要注意的是,虽然Timestamp类型不带时区信息,但在数据库服务器和客户端之间传输数据时,可能会受到时区设置的影响。例如,在使用JDBC驱动程序连接达梦数据库时,可以使用setTimestamp()方法设置Timestamp类型的数据,该方法接受一个javasqlTimestamp对象作为参数。如果该Timestamp对象带有时区信息,则JDBC驱动程序会将其转换为UTC时间,并存储到达梦数据库中,因此最终的存储结果可能会受到时区设置的影响。 因此,在使用达梦数据库存储Timestamp类型数据时,应该注意时区的设置问题,避免数据存储结果的不一致。建议使用标准的UTC时间格式存储Timestamp数据,并在需要时进行时区转换。

日期有两种, 你说这种TimeStamp我用过, 要根据实际需要, 数据库的TimeStamp类型, 用于记录最后更新数据的时间, 也就是,你修改一次记录, 时间变一次,

而另一种javasqlDate 只是存放插入的时间,

javaee中 看你用不用框架了, 基本都只会自动转换标准格式yyyy-mm-dd的日期,其他格式要自己手动转, 也麻烦的。

库建立好之后基本不动,和我们接触最频繁的是表 建表就是声明字段的过程!

选择合适的类型[速度快 减少硬盘占用]

存储空间,还是存储范围有区别?

答案: 两者本质完全一样 ,只是在一些特殊情况下两者显示有区别(只是在显示的时候补全0的位数不一样)

实验

zerofill 零填充(本字段同时即自动带有unsigned属性,因为负数不能零填充)

如 数字2在固定宽度4时 零填充 即为0002

M值是一个整数(固定宽度值),只有在字段有零填充zerofill属性时 规定M值才有意义!

M值只是 显示效果 ,不会影响实际数据值!

如M值为1,实际值255,一样会显示255

列可以声明默认值(推荐声明)

因为null无法和别的值比较

null = 0 返回null

null <> 0 返回null

null只能用is或is not比较 null is null当然对的。

例子:

浮点型有误差,不稳定!定点数更精确。

实际测试数据

Float(M,D)

M精度(总位数,不包含点) 精度值M 影响 存储的 值的范围

D标度(小数位) 小数点后有几位(mysql比较特殊,mssql/oracle都不能指定)

testcolumn float(5,2) unsigned; 范围0到99999

float(5,2)的范围-99999到99999

给float(5,2)这样的字段插入值在进位时有一些规矩:暂时没搞清楚,不是简单的四舍五入

插入值688826实际是68883 末尾6 进位

插入值688825实际是68883 末尾5 进位

插入值688824实际是68882 末尾4 舍去

插入值688005实际是68800

插入值688015实际是68801 末尾5 5前面是1 舍去

插入值688025实际是68802 末尾5 5前面是2 舍去

插入值688035实际是68803 末尾5 5前面是3 舍去

插入值688045实际是68804 末尾5 5前面是4 舍去

一般使用tinyint、char(1)、enum类型。

varchar(M)

M代表宽度 即可容纳的字符数 (并不是字节数) varchar占用的字节数与编码有关:

utf-8 一个汉字3字节 英文字母1字节

对于utf8mb4号称占用4字节但是并不绝对(在utf8可以覆盖到的范围则仍然占用3字节)

utf8mb4最有优势的应用场景:存储emoji表情

例子:

性能太差,不推荐

MySQL在564版本之后,TimeStamp和DateTime支持到微妙

一个例子:

以如下这张表为例

show privileges 命令可以查看全部权限

查询时从user->db->table_pirv->columns_pirv依次验证,如果通过则执行查询。

本课程涉及建表SQL

场景1:歌单按时间排序

场景2:统计云音乐创建歌单的用户

场景3-1:统计云音乐创建歌单的用户列表和每人创建歌单的数量。

场景3-2:统计云音乐创建歌单的用户列表和每人创建歌单的数量,并且只显示歌单数量排序大于等于2的用户

SQL进阶语法-like

场景4:查询一个月内创建歌单(从第6行开始显示10条记录)

场景5:对于未录入歌曲的歌单(trackcount = null),输出结果时歌曲数返回0

连接的作用是用一个SQL语句把多个表中相互关联的数据查出来

场景6:查询收藏“老男孩”歌单的用户列表

子查询:内层查询的结果作为外层的比较条件。一般子查询都可以转换成连接,推荐使用连接。

场景7:查询出没有用户收藏的歌单

场景8:老板想看创建和收藏歌单的所有用户,查询play_list和play_fav两表中所有的userid

实例还是上节中的那些表

场景1:查询每张专辑总的点播次数和每首歌的平均点播次数。

场景2:查询全部歌曲中的最大的播放次数和最小的播放次数。

场景2续:查询播放次数最多的歌曲

count() 和 count(1) 基本一样,没有明显的性能差异。

count() 和 count(song_name) 差别在于 count(song_name) 会除去song_name is null的情况

场景3:显示每张专辑的歌曲列表

实例:查询一个月内userid为1,3,5的用户创建的歌单

学生表:

用于更正成绩的触发器:

以上就是关于mysql数据库时间用什么类型的数据(mysql存时间应什么类型)全部的内容,包括:mysql数据库时间用什么类型的数据(mysql存时间应什么类型)、mysql中的timestamp类型到java来应该用什么类型、达梦数据库中timestamp有时区问题吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9485020.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存