Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:sysdate减去一个值是如何工作的?_Sql_Oracle_Where Clause - Fatal编程技术网

SQL:sysdate减去一个值是如何工作的?

SQL:sysdate减去一个值是如何工作的?,sql,oracle,where-clause,Sql,Oracle,Where Clause,我在我现有的项目中发现了以下代码 select * from mytable where SomeColumn_date >= trunc(sysdate)-.25/24; SomeColumn\u date的样本值为17年6月22日05:46:55 SomeColumn\u date>=trunc(sysdate)-.25/24如何处理日期数据类型 TRUNC(date)函数返回日期,日期的时间部分被截断为格式模型fmt指定的单位。[…]如果省略fmt,则日期将被截断为最近的日期 tr

我在我现有的项目中发现了以下代码

select * from mytable where SomeColumn_date >= trunc(sysdate)-.25/24;
SomeColumn\u date
的样本值为
17年6月22日05:46:55

SomeColumn\u date>=trunc(sysdate)-.25/24如何处理日期数据类型

TRUNC(date)函数返回日期,日期的时间部分被截断为格式模型fmt指定的单位。[…]如果省略fmt,则日期将被截断为最近的日期

trunc(sysdate)
的结果将是不带时间组件的当前日期。现在
.25/24
(实际上意思是
0.25/24
)从中减去。如果使用
-
减去日期,则操作数始终以天为单位<代码>0.25/24
将是一种表示一刻钟的形式

因此,
trunc(sysdate)-.25/24
将导致昨天23:45。

从文档中(我猜您正在使用Oracle):

TRUNC(date)函数返回日期,日期的时间部分被截断为格式模型fmt指定的单位。[…]如果省略fmt,则日期将被截断为最近的日期

trunc(sysdate)
的结果将是不带时间组件的当前日期。现在
.25/24
(实际上意思是
0.25/24
)从中减去。如果使用
-
减去日期,则操作数始终以天为单位<代码>0.25/24将是一种表示一刻钟的形式


因此
trunc(sysdate)-.25/24将导致昨天23:45。

不同的数据库引擎允许对
date
数据类型应用不同的操作。在大多数情况下,
+/-1
的操作将向该日期值加上或减去一天。这在语法上等同于使用
days
时的
dateadd
函数

在这里的示例中,
-.25/24
解析为相当于
-15分钟的数值,然后从日期值中减去该数值


它本质上是
datedd(min,-15,)
的一个可读性差得多的版本。不同的数据库引擎允许对
date
数据类型应用不同的操作。在大多数情况下,
+/-1
的操作将向该日期值加上或减去一天。这在语法上等同于使用
days
时的
dateadd
函数

在这里的示例中,
-.25/24
解析为相当于
-15分钟的数值,然后从日期值中减去该数值


它本质上是一个可读性差得多的
datedd(min,-15,)
好的,所以这里发生了两件事:

 trunk(date,fmt)
TRUNC(date)函数返回日期,日期的时间部分被截断为格式模型fmt指定的单位。如果省略fmt,则日期将被截断为最近的日期

所以如果你假设17年6月22日05:46:55,你得到17年6月22日。因为你没有fmt


DATETIME-.25/24
意味着比当前日期时间早.25小时

但因为你只有约会时间,所以它只在今天上午12:00,即昨天晚上11:45之前25小时


因此,假设现在是2017年6月22日,该日期与2017年6月21日晚上11:45进行比较


注意:-表示当前时间之前,+表示当前时间之后

好,因此这里发生了两件事:

 trunk(date,fmt)
TRUNC(date)函数返回日期,日期的时间部分被截断为格式模型fmt指定的单位。如果省略fmt,则日期将被截断为最近的日期

所以如果你假设17年6月22日05:46:55,你得到17年6月22日。因为你没有fmt


DATETIME-.25/24
意味着比当前日期时间早.25小时

但因为你只有约会时间,所以它只在今天上午12:00,即昨天晚上11:45之前25小时


因此,假设现在是2017年6月22日,该日期与2017年6月21日晚上11:45进行比较


注意:-表示当前时间之前,+表示当前时间之后

我会使用dateadd-更详细、更清晰,并且支持所有日期格式,即datetime2。@AnthonyHorne,他使用的是oracle,而不是sql Server另一种更具可读性的方式,类似于:从mytable中选择*其中某个列的日期>=trunc(sysdate)-间隔'15'minute@RenatoAfonso谢谢-在我的评论之后添加了Oracle标记:)我更愿意使用dateadd-更详细、更清晰,并且支持所有日期格式,也就是datetime2。@AnthonyHorne,他使用的是Oracle,而不是sql Server。另一种更具可读性的方式是:从mytable中选择*其中SomeColumn_date>=trunc(sysdate)-间隔'15'minute@RenatoAfonso谢谢-我的评论后添加了Oracle标签:)