Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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 强制转换(当前时间戳为时间)_Sql_Database_Oracle_Date_Where Clause - Fatal编程技术网

Sql 强制转换(当前时间戳为时间)

Sql 强制转换(当前时间戳为时间),sql,database,oracle,date,where-clause,Sql,Database,Oracle,Date,Where Clause,我正在尝试使用时间戳并从中操作数据,以便可以测量数据库中的不同内容 目前,我有一个列包含一个“日期”,但实际上包含一个完整的戳记“DD/MM/YYYY HH24:MI:SS” 我希望能够抓取所有的条目,其中“DTIME”介于“09:00”和“09:15”之间,但是无法正确地进行转换 如果我要输出列而不进行任何转换,它将如下所示 SELECT ia.DTIME3 FROM ISIS_AUDIT ia WHERE ia.DTIME3 like to_date('24/01/2019',

我正在尝试使用时间戳并从中操作数据,以便可以测量数据库中的不同内容

目前,我有一个列包含一个“日期”,但实际上包含一个完整的戳记“DD/MM/YYYY HH24:MI:SS”

我希望能够抓取所有的条目,其中“DTIME”介于“09:00”和“09:15”之间,但是无法正确地进行转换

如果我要输出列而不进行任何转换,它将如下所示

  SELECT ia.DTIME3
  FROM ISIS_AUDIT ia
  WHERE ia.DTIME3 like to_date('24/01/2019', 'DD/MM/YYYY');
产出:19年1月24日

如果我要把它转换成_char

  SELECT to_char(ia.DTIME3, 'DD/MM/YYYY HH24:MI:SS')
  FROM ISIS_AUDIT ia
  WHERE ia.DTIME3 like to_date('24/01/2019', 'DD/MM/YYYY');
输出:24/01/2019 07:10:52

我希望能够使用这个DTIME3并在时间之间找到条目,但是转换和转换为时间不起作用

这是我的工作选项,但它仍然输出日期,我不想指定日期,以便它可以在一周的任何一天运行

  WHERE ia.DTIME3 between to_date('24/01/2019 09:00:00', 'DD/MM/YYYY HH24:MI:SS') and to_date('24/01/2019 09:15:00', 'DD/MM/YYYY HH24:MI:SS');
输出:2019年1月24日09:00:01

目前,我有一个列包含一个“日期”,但实际上包含一个完整的戳记“DD/MM/YYYY HH24:MI:SS”

这就是它的作用:存储日期和时间(不带小数秒,属于
时间戳
数据类型)。Oracle中没有特定的日期格式(没有时间)

要按一天中的时间进行筛选,可以使用将日期转换为表示其时间的字符串,并且可以进行比较:

TO_CHAR(ia.DTIME3, 'hh24:mi') BETWEEN '09:00' AND '09:14'
您还可以将日期更改为时间戳,并使用:

EXTRACT(从CAST开始的小时数(ia.DTIME3作为时间戳))=9
和提取(从CAST中提取分钟(ia.DTIME3作为时间戳))<15
目前,我有一个列包含一个“日期”,但实际上包含一个完整的戳记“DD/MM/YYYY HH24:MI:SS”

这就是它的作用:存储日期和时间(不带小数秒,属于
时间戳
数据类型)。Oracle中没有特定的日期格式(没有时间)

要按一天中的时间进行筛选,可以使用将日期转换为表示其时间的字符串,并且可以进行比较:

TO_CHAR(ia.DTIME3, 'hh24:mi') BETWEEN '09:00' AND '09:14'
您还可以将日期更改为时间戳,并使用:

EXTRACT(从CAST开始的小时数(ia.DTIME3作为时间戳))=9
和提取(从CAST中提取分钟(ia.DTIME3作为时间戳))<15

Oracle具有
日期
时间戳
数据类型;两者都有年、月、日、时、分、秒组件(
TIMESTAMP
也有小数秒)。Oracle没有
时间
数据类型

相反,使用
TRUNC()
将时间分量截断为午夜,并添加间隔文字:

SELECT *
FROM   ISIS_AUDIT
WHERE  DTIME BETWEEN TRUNC( DTIME ) + INTERVAL '09:00' HOUR TO MINUTE
             AND     TRUNC( DTIME ) + INTERVAL '09:15' HOUR TO MINUTE;

Oracle有
日期
时间戳
数据类型;两者都有年、月、日、时、分、秒组件(
TIMESTAMP
也有小数秒)。Oracle没有
时间
数据类型

相反,使用
TRUNC()
将时间分量截断为午夜,并添加间隔文字:

SELECT *
FROM   ISIS_AUDIT
WHERE  DTIME BETWEEN TRUNC( DTIME ) + INTERVAL '09:00' HOUR TO MINUTE
             AND     TRUNC( DTIME ) + INTERVAL '09:15' HOUR TO MINUTE;
我试着这样做,但是我注意到如果我的开始时间是08:30,结束时间是09:30,那么它会在09:00到09:15之间,所以我想把它从表中排除。im使用的当前WHERE子句非常具体,仅当时间戳包含指定的值时才会排除

实际上,它希望读到“DTIME1到DTIME3不在09:00到09:15之间”

我试着这样做,但是我注意到如果我的开始时间是08:30,结束时间是09:30,那么它会在09:00到09:15之间,所以我想把它从表中排除。im使用的当前WHERE子句非常具体,仅当时间戳包含指定的值时才会排除


确实,它希望读取“DTIME1到DTIME3,而不是在09:00和09:15之间”

感谢您的回复,我将尝试此方法,看看会发生什么。我确实找到了访问数据时间的方法,但是如果我想检查“开始时间”和“完成时间”是否介于“09:00”和“09:15”之间我该怎么做呢。@DavidZammit只需将
DTIME
替换为
START\u TIME
,然后为
END\u TIME
添加一个重复的
BETWEEN
子句。感谢您的回复,我将尝试这种方法,看看会发生什么。如果我想检查“开始时间”和“完成时间”介于“09:00”和“09:15”之间,我怎么能这样做。@DavidZammit只需将
DTIME
替换为
START\u TIME
,然后为
END\u TIME
添加一个重复的
between
子句。只需恢复我提供给您的
WHERE
子句:
WHERE NOT(提取(从ia.DTIME3开始的小时)=9并提取)(ia.DTIME3的分钟数)<15)
.PS:您的回答应该作为对您的问题的编辑或对其他答案的评论发布。感谢您的反馈,我会看看它是如何运行的。只需恢复我提供给您的
WHERE
子句:
WHERE NOT(摘录(HOUR FROM ia.DTIME3)=9并摘录即可(从ia.DTIME3开始的分钟)<15)
.PS:您的回答应该作为对您的问题的编辑或对其他答案的评论发布。感谢您的反馈,我会看看它是如何运行的。
之间的
是包含在内的;您真的想精确地包括09:15:00,还是实际上只包括09:14:59.999…?后者看起来更可能-这就是wGMB的第二种方法是
extract
,因为
之间的
是包含在内的;你真的想精确地包括09:15:00,还是实际上只包括09:14:59.999…?后者看起来更有可能-这就是GMB的第二种方法是
extract
所做的,因为