数据库关于时间查询

数据库关于时间查询,第1张

两种方法

第一种:

select a

from A a

where adate between to_date('2009-04-09 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2009-04-09 03:00:00','yyyy-mm-dd hh24:mi:ss')

第二种:

select a

from A a

where adate>to_date('2009-04-09 00:00:00','yyyy-mm-dd hh24:mi:ss') and adate<to_date('2009-04-09 03:00:00','yyyy-mm-dd hh24:mi:ss')

其中adate是A表中的时间字段

可以先通过to_char将时间转换为字符串,之后通过to_date方式统一时间样式,这样就能灵活的获取时间的格式了。

sql:SELECT to_date(to_char(sysdate,'yyyy-mm-dd')||'23:59:59','yyyy-mm-dd hh24:mi:ss') FROM DUAL;

解释:以上语句就是获取到当前的最后时间点,在跳动一秒就会进入下一天。

备注:时间比较是距离1970年越远的那么时间就越大。

默认情况下,SQL Server 根据截止年份 2049 解释两位数字的年份。

即,两位数字的年份 49 被解释为 2049,而两位数字的年份 50 被解释为 1950。许多客户端应用程序(例如那些基于 OLE 自动化对象的客户端应用程序)都使用 2030 作为截止年份。SQL Server 提供一个配置选项("两位数字的截止年份"),借以更改 SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。

当从 smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从 datetime 或 smalldatetime 值进行转换时,可以通过使用适当的 char 或 varchar 数据类型长度来截断不需要的日期部分。

日期时间类型:time:

格式:hh:mm:ss[nnnnnnn]

范围:00:00:000000000 到23:59:599999999

精确度: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

精确度:000333秒

存储大小(以字节为单位):8

用户定义的秒的小数精度:无

时区偏移量:无

datetime2:

格式:YYYY-MM-DD hh:mm:ss[nnnnnnn]

范围:0001-01-01 00:00:000000000 到9999-12-31 23:59:599999999

精确度:100钠秒

存储大小(以字节为单位):6 到 8

用户定义的秒的小数精度:有

时区偏移量:无

datetimeoffset:

格式:YYYY-MM-DD hh:mm:ss[nnnnnnn] [+|-]hh:mm

范围:0001-01-01 00:00:000000000 到9999-12-31 23:59:599999999(以UTC 时间表示)

精确度:100钠秒

存储大小(以字节为单位):8 到10

用户定义的秒的小数精度:有

时区偏移量:有

str = " select AA,BB,CC from DATA01 where ID='00123'

and to_char(LOCATETIME,'yyyy-mm-dd hh24:mi:ss')>=' "+StartTime+" '

and to_char(LOCATETIME,'yyyy-mm-dd hh24:mi:ss')<=' "+EndTime " ' ";

字符类型的值要用 单引号 括起来

解决办法1:order

by

'时间字段'

asc/desc

为null值的默认排在前面

解决办法2:isnull('时间字段','1900-1-1')

order

by

'时间字段'

asc/desc

(用isnull函数判断下,如果为null则指定一个较小的时间。如上面的'1900-1-1')

方法一:通过函数to_char实现时间格式的转换

SQL> select sysdate from dual;

SYSDATE

------------

17-JUN-15

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'

--------------------------------------

2015-06-17 14:08:21

方法二:更改会话参数

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

方法二:更改参数文件

可以在 initora 中加上一行

nls_date_format='yyyy-mm-dd hh24:mi:ss'

或者

alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss’ scope=spfile;

以上就是关于数据库关于时间查询全部的内容,包括:数据库关于时间查询、oracle sql查询语句 时间格式、从数据库中查询时间类型的数据并格式化成我想要的格式怎么写sql等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/10134447.html

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

发表评论

登录后才能评论

评论列表(0条)

保存