sql数据库中的时间类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql数据库中的时间类型相关的知识,希望对你有一定的参考价值。
各位大哥大姐请教一下sql数据库中的时间类型用nvarchar好还是datetime好啊?用datetime是不是有点麻烦啊?
日期时间类型:
time:
格式:hh:mm:ss[.nnnnnnn]
范围:00:00:00.0000000 到23:59:59.9999999
精确度:100 纳秒
存储大小(以字节为单位):3-5
用户定义的秒的小数精度:有
时区偏移量:无
date:
格式:YYYY-MM-DD
范围:0001-01-01 到 9999-12-31
精确度:1天
存储大小(以字节为单位):3
用户定义的秒的小数精度:无
时区偏移量:无
smalldatetime:
格式:YYYY-MM-DD hh:mm:ss
范围:1900-01-01 到 2079-06-06
精确度:1分钟
存储大小(以字节为单位):4
用户定义的秒的小数精度:无
时区偏移量:无
datetime:
格式:YYYY-MM-DD hh:mm:ss[.nnn]
范围:1753-01-01 到 9999-12-31
精确度:0.00333秒
存储大小(以字节为单位):8
用户定义的秒的小数精度:无
时区偏移量:无
datetime2:
格式:YYYY-MM-DD hh:mm:ss[.nnnnnnn]
范围:0001-01-01 00:00:00.0000000 到9999-12-31 23:59:59.9999999
精确度:100钠秒
存储大小(以字节为单位):6 到 8
用户定义的秒的小数精度:有
时区偏移量:无
datetimeoffset:
格式:YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm
范围:0001-01-01 00:00:00.0000000 到9999-12-31 23:59:59.9999999(以UTC 时间表示)
精确度:100钠秒
存储大小(以字节为单位):8 到10
用户定义的秒的小数精度:有
时区偏移量:有
参考技术A 满意答案。9级2010-11-29使用nvarchar对于前期的实现比较容易,但性能及后期使用及后期需求开发比较困难如按时间排序,数据库类型校验,根据时间段查询,根据时间的分组统计等等方面造成的影响比较大
追问:
如果用datetime
我的MyEclipse用Hibernate转换时是timestamp类型的
在用模糊查询查时间时有点纠结啊
老是报不能转换的错误
回答:
用hibernate啊
那你在配置文件注入类型不用时间戳
改成这个试试java.util.Date
补充:
hibernate项目好几年没做过了
原来在数据库时间建模和操纵时习惯用java.sql.Timestamp与数据库中DateTime对应,但业务流通层,模型里还是用java.util.Date
因为这些时间直接的转换都是一样的方便,而且这样做逻辑理解上比较直观
记忆中是没有出现过错误,Timestamp在现在使用数据源时经常使用
追问:
知道用date类型的哇
但是hibernate自动生成的就是timestamp类型
不改配置文件
就用timestamp怎么做啊?总不能每次生成就改一次配置文件吧.....
追问:
还有我做的是模糊查询
在form里面时间又是string类型的
转换有点麻烦
回答:
你在createSQLQuery方法后面在使用
addScalar方法传入你datetime的实体对应名和hibernate类型试一下吧
补充:
这个的确比较麻烦,你可以写个公共转换方法进行转换
就是字符串根据你的时间格式进行取出时间long
然后转换就可以了
大概这样子
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat(); 参考技术B 使用nvarchar对于前期的实现比较容易,但性能及后期使用及后期需求开发比较困难 如按时间排序,数据库类型校验,根据时间段查询,根据时间的分组统计等等方面造成的影响比较大 参考技术C 你可以用时间戳,int的就可以了 参考技术D 用datetime吧 这样方便查询
SQL Server中的数据类型
参考 SQL Server 2012编程入门经典(第4版)
SQL Server 自带的数据类型
整型:
货币
近似小数
日期/时间
特殊数字
字符
Unicode
二进制
其他
以上是关于sql数据库中的时间类型的主要内容,如果未能解决你的问题,请参考以下文章
检查列数据类型并仅对 Spark SQL 中的整数和小数执行 SQL