sql数据库中的时间类型
我们看到的是这种格式的字符串2009-10-18 10:49:25.00其实在数据库内部记忆的是从1900到现在的毫秒数所以你排序的时候,是以。1900年到指定时期的毫秒数大小来排序的
有datetime和smalldatetime两种格式的日期时间数据类型,如下:
1、datetime
数据库内部用两个4字节的整数存储datetime数据类型的值。
第一个4字节存储基础日期(即1900-1-1, base date)之前或之后的日期。
日期范围为1753-1-1至9999-12-31。当日期为1900-1-1时值为0,之前的日期是负数;之后日期是正数,另外一个4字节存储以午夜后三又三分之一(10/3)毫秒数所代表的每天的时间。
2、smalldatetime
smalldatetime数据类型存储日期和每天的时间,但精确度低于datetime。
SQL Server将smalldatetime的值存储为两个2字节的整数。
第一个2字节存储1900-1-1后的天数,另外一个2字节存储午夜后的分钟数。
日期范围从1900-1-1到2079-6-6,时间精确到分钟,29.998秒或更低的smalldatetime值向下舍入为最接近的分钟,29.999秒或更高的smalldatetime值向上舍入为最接近的分钟。
--returns time as 12:35
SELECT CAST('2000-05-08 12:35:29.998' AS smalldatetime)
GO
--returns time as 12:36
SELECT CAST('2000-05-08 12:35:29.999' AS smalldatetime)
GO
注意:没有单独的日期或时间类型。
日期时间类型:
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
用户定义的秒的小数精度:有
时区偏移量:有
满意答案。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();
使用nvarchar对于前期的实现比较容易,但性能及后期使用及后期需求开发比较困难 如按时间排序,数据库类型校验,根据时间段查询,根据时间的分组统计等等方面造成的影响比较大
你可以用时间戳,int的就可以了
用datetime吧 这样方便查询
XML技术与数据库的发展趋势分析
数据库技术及其应用系统经历了从层次数据库 网状数据库到关系数据库以及面向对象数据库的发展 在传统的商业和事务处理领域内逐步成熟 取代了原有的基于文件系统的数据处理方式 成为计算机信息系统中的重要基础和支柱 但随着Internet的飞速发展 Web的出现改变了人们习惯的处理方式 也给数据库技术提出了必须面对的重要问题 ...
解释什么是S QL数据库?
SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。...
QL网名是什么意思?
QL是指Query Language的缩写,意为查询语言。QL还有其他意思,例如嘉鲁梭语词汇表(Quechua Language)和伯明翰科技学院(Queen's Lane)等。但在网络上,QL最常见的含义是查询语言,特别是在数据库管理系统中使用。QL网名常被程序员和数据库管理员使用,因为他们经常使用查询语言来查询和管理数据库。此外...
sql2016怎么打开数据库管理器
ql2016打开数据库管理器步骤如下:1、首先第一步我们点击左下角的开始菜单图标之后,找到所有程序选项,点击选择所有程序,打开查看电脑上的所有程序。2、点击这个所有程序之后,我们找到名称为启动的这个文件夹,打开之后在其中找到服务管理器选项并点击。3、点击打开SqlServer服务管理器之后,我们可以看到其中...
数据库对象有哪些
索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。如聚簇索引。 编辑本段视图 视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存在。视图是由查询数据库表产生的,它限制了...
null中文代表什么
链表:在数据结构中,"null"常用于表示链表的末尾节点,即表示没有后继节点。总的来说,"null"在计算机领域是一个重要的概念,用于表示无效、未定义或缺少值的情况。它在编程和数据库中经常被用来处理和避免错误,并帮助程序员有效地管理数据和内存。QL查询:在SQL语言中,"null"用于表示数据库表中某...
graphql是什么
集成友好:GraphQL可以与现有的后端技术集成,如RESTful API、数据库等。这使得开发者可以在保留现有技术的基础上,逐步迁移到GraphQL。3. GraphQL的应用场景 GraphQL适用于需要实时获取复杂数据的应用场景,如社交媒体、电商网站等。在这些场景中,GraphQL可以提供高效、灵活的数据访问方式,满足客户端的各种...
桑拿ql服务是什么意思?
桑拿SQL服务究竟是什么?在现代企业活动中,SQL数据库服务是一个必要的组成部分。这个服务承担了数据管理和处理的任务,其效率和可靠性影响着企业的整体运作。桑拿SQL服务则是一种专门为桑拿系统设计的数据库服务,它将桑拿的特殊需求与SQL服务的一般需求结合,以提升整个桑拿系统的运行效率和稳定性。桑拿SQL...
ql语句中条件短语的关键字是
您是要问Sql语句中条件短语的关键字是什么吗?WHERE。SQL是具有数据操纵和数据定义等多种功能的数据库语言,WHERE子句的目的是对选择操作进行一些限制,是条件短语的关键字。
再不懂时序就OUT啦!阿里云数据库InfluxDB正式商业化
时序数据很简单,构成具有三个要素,主体,时间戳,和指标数据。比如: xxx公司(主体)2019年8月26日上午10时,11时, 12时(时间戳)的股价分别是:160 USD,165 USD,180 USD(指标值)。概括来说,区别于关系数据库关心的是“最终结果”。时序数据表示的是资产或者过程是如何随着时间变化的,体现...
移涛复方: 必须进行转换,将varchar换成datetime才可以 datediff你灵活一下使用就行了 datediff(day,时间1,时间2) 你把时间2放时间1前边不就可以了吗
乐至县15388323898: 数据库中有哪几种date类型的格式? - ?
移涛复方: 在数据库取出来的时候就转换好select getdate() 2006-05-12 11:06:08.177 我整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下:select Convert(varchar(10),getdate(),120)2006-05-12select CONVERT(varchar, ...
乐至县15388323898: SQL中哪个字段类别记录日期和哪个字段类别记录时间 - ?
移涛复方: SqlServer的时间格式为:2009-09-08 07:30:03.000,顾名思义就是日期和时间混合在一起的格式,如果用此字段类型只保存日期或时间是不可能的,建议你用varchar类型的...
乐至县15388323898: sql数据库里datetime类型怎么查询 - ?
移涛复方: 你用等就行了. 不需要like的.elseif otype="infotime" then sql="select * from news where CONVERT(VARCHAR(10),infotime,120) ='"& key &"' order by id desc"其实关系到时间的,最好是用大于小于这样,就不会有time的问题了.
乐至县15388323898: sql server时间格式 - ?
移涛复方: 用datepart函数 convert(char(2),datepart(m,字段名称)) + '-' + convert(char(2),datepart(d,字段名称))
乐至县15388323898: 2012 - 1 - 4 在sql中是什么数据类型 - ?
移涛复方: select to_date('2014-1-4','yyyy-mm-dd') from dual;
乐至县15388323898: 关于sql中日期表述方法 - ?
移涛复方: 就是这么写的啊,应该没问题啊. 下面是执行的结果: 参数 mm 和 month 效果一样.1> select DATEADD(mm, 1, GETDATE() ) 2> go ----------------------- 2011-05-17 15:00:21.577 (1 行受影响)1> select DATEADD(month, 1, GETDATE() ) 2> go ----------------------- 2011-05-17 15:00:27.450 (1 行受影响)
乐至县15388323898: sql 时间函数?
移涛复方: 是时间类型的肯定就保存有日期和时间. 如果你只想要日期,那就设为varchar类型, 在默认值时写 convert(char(10), getdate(), 120)
乐至县15388323898: 怎样建一个sql纯时间数据类型?
移涛复方: 你应该把数据库想象成储存原材料的仓库,而原材料的最佳储存方式就是按原样储存,这样你可以随时把它加工成产品A或产品B,而不应该直接把原材料加工成产品A再储存,这样你就无法随时转型生产产品B或C等等了.我这样说的意思是告诉你:你不用关心数据库中的时间类型,只要把时间数据按数据库现有的时间类型(推荐用datetime)进行保存就行了,而在你把数据从数据库中取出来使用的时候再把它转换成你需要的时间格式不就行了吗?一般来说程序设计语言都有这种格式转换函数的.
乐至县15388323898: SQL2008数据库中的time类型对应的C#类型是什么? - ?
移涛复方: MSSQL 2008数据库中time类型只保存时间,没有日期,因此C#中没有类型跟他对应,但可以通过下面的方式与DateTime转换: