Sql 强制转换(当前时间戳为时间)
我正在尝试使用时间戳并从中操作数据,以便可以测量数据库中的不同内容 目前,我有一个列包含一个“日期”,但实际上包含一个完整的戳记“DD/MM/YYYY HH24:MI:SS” 我希望能够抓取所有的条目,其中“DTIME”介于“09:00”和“09:15”之间,但是无法正确地进行转换 如果我要输出列而不进行任何转换,它将如下所示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',
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
所做的,因为