在oracle 10g中执行此SQL后:

SELECT SYSDATE, CURRENT_TIMESTAMP  FROM DUAL

我收到了这个奇怪的输出:

时间差的原因是什么?

推荐答案

CURRENT_DATECURRENT_TIMESTAMP返回会话时区中的当前日期和时间.

SYSDATESYSTIMESTAMP返回系统日期和时间,即数据库所在系统的日期和时间.

如果您的客户端会话与数据库所在的服务器不在同一时区(或者通过NLS设置表示无论如何不在同一时区),混合使用SYS*CURRENT_*函数将返回不同的值.它们都是正确的,它们只是代表不同的事物.看起来您的服务器(或自认为)处于+4:00时区,而您的客户端会话处于+4:30时区.

如果时钟不同步,你也可能会看到时间上的微小差异,这似乎不是问题.

Sql相关问答推荐

创建每小时重置的序列号

SQL查询以创建手头的流动余额?

从列的不同值创建列

当我们加入两个表时,我们可以省略GROUP BY中的列名吗?

关于Postgres横向联接的谓词

按两列分组,并根据SQL中的条件返回第三个列值

排除具有部分匹配条件的记录

WooCommerce产品的SQL查询:获取sku和产品标签

使用 union 的有序结果获取行数

AdventureWorks 查询

创建具有多个子查询的 SQL 视图

SQL 中的第一个值和倒数第二个值

基于变量的条件 WHERE 子句

在Snowflake中如何使用SQL对版本字符串进行排序?

PostgreSQL如何将Unix纪元时间戳转换为日期时间并进行拼接

根据潜在空值的条件对记录进行计数

Select 多年的日期范围

如何 Select 一列具有最小值而另一列具有给定值的记录?

当没有任何行存在时,将一个表中的行插入到另一个表中的更好方法

包含多行的 SQL 查询