首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库日期类型字段设计,应该如何选择?

因为如果使用 Java 框架产生代码,对数据库定义为 Date 类型的字段,甚至能在页面上产生出JS的时间选择框,的确能节省很多开发时间。...曾经使用过毫秒数(Java 的 System.currentTimeMillis())这种方式,但是选用这个方式,考虑的不是使用起来是否方便或者数据迁移,而是考虑到下面的原因: Java 取到的毫秒数是对时间点的一种准确描述...虽然我们都是在一个确切的时区里,例如中国都是使用东八区时间,但是需要考虑的是: 有些产品是可能有海外客户的 产品所运行的机器,时区的设置未必都是东八区。...为了解决这个问题,我设计了一个辅助的措施,就是建立一个数据库函数来进行时间转换,把毫秒数的时间转为制定时区格式时间串,DBA 在维护时可以使用。测试了 Oracle 和 DB2 上,都可以这样。...在之后的设计里,还使用过 YYYYMMDDHHmmSST 格式,其中的“T”指时区,加入时区,带来的影响有: 日期时间字段就不能在使用数值来存储了,字符串比数字存储和检索的效率都要低。

2K20

数据库时区那些事儿 - Oracle时区处理

如果应用和Oracle时区不一致,那么应该使用TIMESTAMP WITH LOCAL TIME ZONE。 对于JDBC程序来说,JVM时区和用户时区保持一致就行了。...如果应用和Oracle时区不一致,而且需要保存时区信息,那么应该使用TIMESTAMP WITH TIME ZONE。...格式化日期时间字符串函数TO_CHAR: 对于TIMESTAMP WITH TIME ZONE来说,使用TO_CHAR时要注意让它输出时区信息(TZH:TZM TZR TZD),否则结果会是截断的。...使用Asia/Shanghai时区把这个值再查出来,看看结果。 使用Asia/Shanghai时区,获得这个字段的格式化字符串(使用DATE_FORMAT()函数)。...在Oracle客户端操作时区 -- 查询系统时区和session时区 SELECT DBTIMEZONE, SESSIONTIMEZONE FROM DUAL; -- 设置session时区 ALTER

4.6K50
您找到你想要的搜索结果了吗?
是的
没有找到

PG几个有趣的插件和工具介绍

可以在PostgreSQL上使用Oracle的特殊函数和包,并且兼容Oracle的部分语法、数据类型、函数、字典表等。 通过orafce可以和Oracle兼容的功能。...数据类型 Item Overview VARCHAR2 变长字符数据类型 NVARCHAR2 变长国家字符数据类型 DATE 存储日期和时间数据类型 SQL 查询 Item Overview DUAL...SUBSTRB 使用字节来指定位置和长度提取字符串的一部分 日期/时间函数 Item Overview ADD_MONTHS 为日期添加月份 DBTIMEZONE 返回数据库时区的值 LAST_DAY...通过系统视图或扩展视图(pg_stat_activity或pg_stat_statements)来辅助分析函数和存过的性能问题也是有所局限。...报表以火焰图形式展示函数调用堆栈、耗时占比,还可以查看函数每个SQL的位置、执行次数、最长执行时间、总时间等。 创建扩展后,使用plprofiler调用函数,从后端收集本地数据来创建HTML报告。

54030

SQL函数 CURDATE

它将当前本地日期作为数据类型DATE返回。请注意,参数括号是可选的。CURDATE返回此时区的当前本地日期;它根据本地时间变量(夏令时)进行调整。...请注意,除了GETUTCDATE之外,所有 SQL时间和日期函数都特定于当地时区设置。...要获得通用的(独立于时区的)当前时间戳,你可以使用GETUTCDATE或ObjectScript $ZTIMESTAMP特殊变量。 在使用嵌入式SQL时,这些数据类型的性能不同。...DATE数据类型将值存储为$HOROLOG格式的整数; 当在SQL显示时,它们被转换为日期显示格式; 当从嵌入式SQL返回时,它们作为整数返回。...TIMESTAMP数据类型以相同的格式存储和显示其值。 可以使用CONVERT函数来更改日期和时间数据类型

3.7K31

SQL函数 CURRENT_DATE

不允许使用参数括号。CURRENT_DATE返回此时区的当前本地日期;它根据本地时间变量(夏令时)进行调整。...请注意,除GETUTCDATE之外,所有 SQL时间和日期函数都特定于本地时区设置。...要获得通用的当前时间戳(独立于时区),可以使用GETUTCDATE或ObjectScript $ZTIMESTAMP特殊变量。 使用嵌入式SQL时,这些数据类型的执行方式不同。...DATE数据类型将值存储为$HOROLOG格式的整数;当在SQL显示时,它们将转换为日期显示格式;当从嵌入式SQL返回时,它们将作为整数返回。TIMESTAMP数据类型以相同的格式存储和显示其值。...可以使用CONVERT函数更改日期和时间数据类型。 CURRENT_DATE可以用作CREATE TABLE或ALTER TABLE的默认规范关键字。

5K41

Oracle实践|Oracle内置函数之日期与时间函数

序言背景说明Oracle 数据库提供了丰富的内置函数,涵盖数值处理、字符串操作、日期和时间处理、逻辑判断、集合处理、数据分析、数据类型转换等多个方面。...在处理过程,日期和时间是分不开的内置函数,两者结合其他函数处理日期和时间相关的查询、计算、格式化,为我们在工作、学习提供了便利。...CURRENT_TIMESTAMP:返回当前日期和时间,包括时区信息。返回格式DD-MM-YY HH24:MI:SS.FF。LOCALTIMESTAMP:返回当前日期和时间,不包括时区信息。...当我们使用转换函数时,即使我们写了日期格式,也会补充时间格式,例如DT1;当我们使用转换函数时,使用格式不足支撑数据则会报错,例如DT2;当我们使用转换函数时,使用的数据值不满足格式时,会补充时间格式...,例如DT3;当我们使用转换函数时,正常情况下例如DT4;3 日期运算类函数这里函数在SQL计算很常见,例如查询3个月以前的数据,查询上周的数据等等。

88141

Java8新日期处理API

5、在java8如何检查重复事件,比如生日 在java还有一个与时间日期相关的任务就是检查重复事件,比如每月的账单日 如何在java判断是否是某个节日或者重复事件,使用MonthDay类。...10、在java8使用时钟 java8自带了Clock类,可以用来获取某个时区下(所以对时区是敏感的)当前的瞬时时间、日期。...toInstant()就是将Date转换成Instant的 18,如何在java8使用预定义的格式器来对日期进行解析/格式化 在java8之前,时间日期的格式化非常麻烦,经常使用SimpleDateFormat...在DateTimeFormatter还有很多定义好的格式,有兴趣的可以自己去看一下 19、如何在java使用自定义的格式器来解析日期  在上例,我们使用了预置的时间日期格式器来解析日期字符串了...我们还学习了如何在Java 8用线程安全的方式对日期进行解析及格式化,而无需再使用线程本地变量或者第三方库这种取巧的方式。新的API能胜任任何与时间日期相关的任务。

4.2K100

数据库存储时间你用对了吗?

数据库存储时间的类型及对比 1、前言 我们平时在开发不可避免的要存储时间,比如我们要记录某条数据的创建时间、更新时间等等。数据库中有多种数据类型可以存储时间,那不同数据类型我们要怎么选择?...它把日期和时间封装到格式为YYYYMMDDHHMMSS的整数,与时区无关。使用8个字节的存储空间。...因此,在不同时区查询到同一个条记录此字段的值会不一样。...6、拓展:关于Java时间的问题 Java 8 之前的时间会有一些 BUG。在开发的过程需要注意。...因此,在 阿里巴巴Java开发手册,也做了强制规定: ? PS:在Java 8 ,对这个问题进行了改进,如果使用Java 8 时间 API 的话,则会报错。 ? 6.2 Date 是可变的。

1.8K10

【数据库04】中级开发需要掌握哪些SQL进阶玩法

我通俗的理解成,创建视图是创建了一个规则,使用视图时再根据规则进行计算。 2.2 在SQL查询使用视图 创建视图后可以像使用数据表一样使用视图。。...5.SQL的数据类型与模式 5.1 SQL的日期和时间类型 SQL中支持的日期和时间相关的数据类型有: 日期(date)。年月日。必须按照2018-04-05这种格式指定。 时间(time)。...通过指定with timezone,可以把时区信息连同时间一起存储。必须按照2018-04-25 10:29:01.45格式指定,秒后的小数点位数可以变长。...保留Mysql在内的某些系统提供了datetime数据类型用来表示时区不可调整的时间。在实践时间规范会有许多的特殊情况。 SQL还支持interval数据类型,它表示时间区间。...显示格式的转换并不是数据类型的转换,而是格式的转换。不同数据库产品提供了不同的格式化函数。

1.6K20

非常规方式处理Oracle+.NET开发全球化的时区显示

咨询了几个大牛有关.NET开发全球化的时区显示问题,大家的意见有三个: 1、使用UTC Time记录到数据库,展示的时候根据用户所选择的时区进行转换展示 2、使用固定时区DateTime记录到数据库,...大部分人喜欢1,其次是3,最后是2 而我今天要分享的这个Oracle数据库下的开发,有个前提就是我不能修改数据库,也不能修改写入数据库的时间是指定时区的,因为Infor LN ERP更新此时间字段,...但是呢,我不能直接用第1条方案,因为我有些筛选条件,根据用户的日期(时间)还需要筛选数据,那么我不想:既修改展示阶段的时间时区,又修改查询时候的输入时间。...于是就有了今天的非常规方案:sessiontimezone 当我们在Oracle数据库执行以下SQL时,可以知道数据库的时区和我当前连接的时区。...如何在Infor Baan ERP LN的报表上打印Barcode条码

50710

ClickHouse数据库数据定义手记之数据类型

使用DateTime的时候需要注意几点: DateTime时间点实际上保存为Unix时间戳(笔者探究过这里的单位应该是秒),与时区或者夏时制无关 DateTime的时区并不存储在列数据或者结果集中,而是存储在列元数据...类型数据的输入和输出格式 DateTime类型数据插入的时候,整数会被视为Unix时间戳,并且会使用UTC作为时区(零时区),字符串会被视为使用时区的日期时间(取决于服务或者系统),再基于时区转化为对应的...如果熟悉Javajava.lang.Optional,Nullable的功能就是与Optional相似,表示某个基本数据类型可以为Null值(写入时候不传值)。...,所以在使用INSERT语句的时候可以直接使用字符串形式写入,查询的结果虽然在客户端命令行展示的是可读的"字符串",但是如果想查询到字符串格式的结果需要使用内置函数IPv4NumToString()和IPv6NumToString...实践表明: ClickHouseDataType可以查看ClickHouse各种数据类型Java数据类型以及SQLType之间的对应关系,UInt64 => BigInteger ClickHouse

1.9K30

一脸懵逼学习oracle

数据类型 (1)创建数据表的时候,必须为各个列指定数据类型 (2)以下是oracle数据类型的类别:         数据类型:字符,数值,日期时间,RAW/LONG RAW,LOB 8:字符数据类型...TIMESTAMP,存储日期,时间时区信息,秒值精确到小数点后6位;    11:其他数据类型: (1)存储二进制的数据类型:   a:RAW数据类型用于存储二进制数据,最多能存储2000字节...(3)oracle伪列就像一个表列,但是它并没有存储在表       a:伪列可以从表查询,但不能插入,更新和删除它们的值       b:常用的伪列有rowid,rownum      ...c:Rowid是表中行的存储地址,该地址可以唯一地标识数据库的一行,可以使用rowid伪列快速地定位表的一行;       RowNum是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数;...; 2:Oracle连接:         使用连接在多个表查询数据;         在where子句中写入连接条件;         在表中有相同列时,在列明之前加上表名前缀; 3:连接多给表:

2.1K70

SQL函数 GETUTCDATE

由于UTC时间在地球上的任何地方都是相同的,不依赖于当地时区,也不受当地时差(夏令时)的影响,因此当不同时区的用户访问同一数据库时,此函数对于应用一致的时间戳非常有用。...以下规则确定返回哪种时间格式: 如果当前UTC时间戳被提供给数据类型为%PosiTime的字段,则此时间戳值将以POSIXTIME数据类型格式返回。...要更改默认日期时间字符串格式,请使用带有各种日期和时间选项的set option命令。 GETUTCDATE的典型用法是在SELECT语句SELECT列表或查询的WHERE子句中。...CURTIME和CURRENT_TIME返回当前本地时间。这些函数使用日期或时间数据类型。这些函数都不支持精度。 TIMESTAMP数据类型以相同的格式存储和显示其值。...请注意,除GETUTCDATE外,所有 SQL时间戳函数都特定于本地时区设置。要获得通用的当前时间戳(独立于时区),还可以使用ObjectScript $ZTIMESTAMP特殊变量。

95830

进阶数据库系列(六):PostgreSQL 数据类型与运算符

时间类型 时间类型是TIME和TIMEwith time zone,默认情况下为不带时区(即:TIME)。不带时区时间格式可接受输入方式有:HH:MM:SS、HH:MM、HHMMSS。...带时间格式输入可用系统的NOW()函数。时间时区输入参考如下。...TIMESTAMP类型 时间戳类型的有效输入由一个日期和时间的联接组成,后面跟着一个可选的时区,一个可选的 AD 或者 BC。时间戳输入格式为:YYYY-MM-DD HH:MM:SS。...ARRAY构造器 数组类型数据的查询 和其他语言一样,PostgreSQL数组也是通过下标数字的方式进行访问,只是PostgreSQL数组元素的下标是从1开始n结束,格式:[n]。...向tmp4表插入系统当前时间,SQL语句如下: 由于由时间函数获得的时间是带时区的,所以需要先将字段属性修改为带时区类型的时间: ALTER TABLE tmp4 ALTER COLUMN t

3.3K31

PostgreSQL 教程

连接多个表 主题 描述 连接 向您展示 PostgreSQL 连接的简要概述。 表别名 描述如何在查询使用表别名。 内连接 从一个表中选择在其他表具有相应行的行。...使用 CTE 的递归查询 讨论递归查询并学习如何在各种上下文中应用它。 第 9 节....整型 向您介绍 PostgreSQL 的各种整数类型,包括SMALLINT、INT和BIGINT。 DATE 引入DATE用于存储日期值的数据类型时间戳 快速了解时间数据类型。...间隔 向您展示如何使用间隔数据类型有效地处理一段时间。 TIME 使用TIME数据类型来管理一天时间值。 UUID 指导您如何使用UUID数据类型以及如何使用提供的模块生成UUID值。...PostgreSQL Java 教程 此 PostgreSQL JDBC 部分向您展示,如何使用 Java JDBC 驱动程序与 PostgreSQL 数据库进行交互。

50110

oracle的操作

oracle内置权限:(SELECT * FROM SYSTEM_PRIVILEGE_MAP查); Oracle的数据库访问权限类型共有两种: 系统权限: 允许用户执行特定的数据库动作,创建表、创建索引...数据操作和查询语句被包含在PL/SQL代码的过程性单元,经过逻辑判断、循环等操作完成复杂的功能或者计算 2.PL/SQL的优点 使一组语句功能形成模块化程序开发 使用过程性语言控制程序结构 可以对程序的错误进行处理...只能使用in模式参数传入参数值 在函数的声明,必须包括一个带有数据类型的RETURN 子句,表示函数计算后的最终返回函数的结果类 型。...好处: 可以实现用简单的SQL语句不能实现的计算 提高查询的效率 使用规则: 只能使用函数,而不是过程 函数不允许DML语句 形参必须为IN 必须返回Oracle支持数据类型,不能使用PL...*,rownum rn from emp where rownum<=10 ) where rn>=5; 分页查询格式1 在查询的最外层控制分页的最小值和最大值。

1.5K20
领券