oracle数据库建表语句可以指定date字段的格式吗

oracle数据库建表语句可以指定date字段的格式吗,第1张

可以

oracle数据库建表date,Oracle数据库中关于日期时间字段类型 转载

2021-04-02 21:03:04

GUlijiwa古力

码龄4年

关注

Oracle数据库

与日期有关的有三种类型:date,timestamp与interval。DATE和TIMESTAMP类型存储精度可变的固定日期/时间,二者区别是,后者秒可以精确到小数,另外还可以有时区之分。。INTERVAL类型可以很容易地存储一个时间量,如“8个小时”或“30天”。将两个日期相减,就会得到一个时间间隔(INTERVAL);例如,将8小时间隔加到一个TIMESTAMP上,会得到8小时以后的一个新的TIMESTAMP。

*** 作日期有关字段的时候,最好显示地指定日期或时间格式,比如:

Insert into t ( date_column ) values ( to_date( '01/02/2003', 'DD/MM/YYYY' ) )避免各种格式造成混乱。

1. DATE类型介绍

DATE类型是一个7字节的定宽日期/时间数据类型。它总是包含7个属性,包括:世纪、世纪中哪一年、月份、月中的哪一天、小时、分钟和秒。这七个字节分别存储的是这7个属性,比如:2005-12-05 12:30:43存储的是120,105,12,5,12,31,44。世纪和年份分别加了100,分钟和秒钟分别加了1。世纪和年份加100是为了区分公元前和公元后。我们经常使用这样的条件,Where to_char(date_column,'yyyy') = '2005',其实这个地方可以换成:Where trunc(date_column,'y') = to_date('01-jan-2005','dd-mon-yyyy')。因为,trunc函数是在日期上将年份后面5个字节清空,而to_char函数,还要转换成字符串。当然,如果能够不使用函数最好,比如:created >= to_date('01-jan-2005','dd-mon-yyyy') and created <to_date('01-jan-2006','dd-mon-yyyy')这样如果在created列上建立了索引,还能使用索引。

1. 数据类型

MS SQL Server 2005 有 datetime 和 smalldatetime 两种格式的日期时间数据类型。注意:没有单独的日期或时间类型。

2.数据库内部用两个 4 字节的整数存储 datetime 数据类型的值。第一个 4 字节存储基础日期(即 1900-1-1, base date )之前或之后的日期。日期范围为 1753-1-1 至 9999-12-31 。当日期为 1900-1-1 时值为 0 ;之前的日期是负数;之后日期是正数。另外一个 4 字节存储以午夜后三又三分之一( 10/3 )毫秒数所代表的每天的时间。精确度为百分之三秒(等于 3.33 毫秒或 0.00333 秒)。如下表所示,把值调整到 .000 、 .003 、或 .007 秒的增量。

3.SQL 如下:

查询中,我们常常需要搜索指定日期范围内的数据,比如返回 1998-01-01 当天内的数据,你可能会这样写:

Date >= '1998-01-01 00:00:00.000' and date <= '1998-01-01 23:59:59.999'

根据上面的调整规则,其实这句语句的实际搜索范围为:

date >= '1998-01-01 00:00:00.000' and date <= '1998-01-02 00:00:00.000' 你会看到这包括了 1998-01-02 的数据,所以最好的正确的搜索语句为:

date >= '1998-01-01 00:00:00.000' and date <'1998-01-02 00:00:00.000'

4. 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 )

GO4.

1.首先点击顶部菜单中的“新查询”,打开一个SQL输入窗口。

2.选择CONVERT(varchar(100),GETDATE(),23)。选择CONVERT(varchar(100),GETDATE(),23)。

3.选择CONVERT(varchar(100),GETDATE(),8)将当前时间格式化为[hour:minute:second]。

4.选择CONVERT(varchar(100),GETDATE(),20)。选择CONVERT(varchar(100),GETDATE(),20)。

5.选择CONVERT(varchar(100),GETDATE(),105)将当前日期格式化为[date,month,year]。

6.将当前日期格式化为[年/月/日],选择CONVERT(varchar(100),GETDATE(),111)。完成效果图。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存