Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 数据类型为CHAR(23字节)的两个日期之间的Oracle差异_Sql_Oracle_Date_Datetime_Select - Fatal编程技术网

Sql 数据类型为CHAR(23字节)的两个日期之间的Oracle差异

Sql 数据类型为CHAR(23字节)的两个日期之间的Oracle差异,sql,oracle,date,datetime,select,Sql,Oracle,Date,Datetime,Select,如何在几分钟内找到以下两个日期之间的差异,这两种数据类型都是使用SQL的字符 2019-10-31 10:23:05.927 2019-10-30 11:20:05.500 您可以使用to_date()将两个字符串都转换为dates(忽略毫秒部分),然后减去它们。这将为您提供一个数值,该数值以天数表示日期之间的差异,然后您可以将其转换为小时: ( to_date(substr(col1, 1, 19), 'yyyy-mm-dd hh24:mi:ss') - to_date(s

如何在几分钟内找到以下两个日期之间的差异,这两种数据类型都是使用SQL的字符

2019-10-31 10:23:05.927 
2019-10-30 11:20:05.500
您可以使用
to_date()
将两个字符串都转换为
date
s(忽略毫秒部分),然后减去它们。这将为您提供一个数值,该数值以天数表示日期之间的差异,然后您可以将其转换为小时:

(
    to_date(substr(col1, 1, 19), 'yyyy-mm-dd hh24:mi:ss')
    - to_date(substr(col2, 1, 19), 'yyyy-mm-dd hh24:mi:ss')
) * 24 * 60
如果您确实希望包含毫秒部分,那么它会变得很长。您可以使用
to_timestamp()
将字符串转换为
时间戳
s,然后对其进行减法;这将生成一个间隔,您需要从中提取每个零件

extract(hour from 
    to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
    - to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
) * 60
+ extract(minute from 
    to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
    - to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
)
+ extract(second from 
    to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
    - to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
) / 60
您可以使用
to_date()
将两个字符串都转换为
date
s(忽略毫秒部分),然后减去它们。这将为您提供一个数值,该数值以天数表示日期之间的差异,然后您可以将其转换为小时:

(
    to_date(substr(col1, 1, 19), 'yyyy-mm-dd hh24:mi:ss')
    - to_date(substr(col2, 1, 19), 'yyyy-mm-dd hh24:mi:ss')
) * 24 * 60
如果您确实希望包含毫秒部分,那么它会变得很长。您可以使用
to_timestamp()
将字符串转换为
时间戳
s,然后对其进行减法;这将生成一个间隔,您需要从中提取每个零件

extract(hour from 
    to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
    - to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
) * 60
+ extract(minute from 
    to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
    - to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
)
+ extract(second from 
    to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
    - to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
) / 60

不存储日期是字符。不存储日期是字符。感谢您的回复,但两个选项都没有以分钟为单位给出准确的时差,我在下面尝试了从您的摘录选项及其提供的时差,以分钟为单位。(摘录日期从(到)时间戳(col1,'YYYY-MM-DD HH24:MI:SS.FF3')-到(到)时间戳(col2,'YYYY-MM-DD HH24:MI:SS.FF3'))*24*60+(摘录时间从(到)时间戳(col1,'YYYY-MM-DD HH24:MI:SS.FF3')-到(col2,'yyyyyyy-MM-DD HH24:MI:SS.FF3'))的小时)+(摘录分钟从(到)时间戳(col1,'yyyyyyyyy-MM-DD:FF3')-时间戳)(col2,'YYYY-MM-DD HH24:MI:SS.FF3'))作为min_-dff,@Tushar:我刚刚修复了第二个表达式(它以小时而不是分钟给出结果)。感谢您的回复,但两个选项都没有以分钟为单位给出准确的时差,我尝试了下面的摘录选项及其以分钟为单位给出的时差。(摘录)(日期从(到)时间戳(col1,'YYYY-MM-DD HH24:MI:SS.FF3')到(到)时间戳(col2,'YYYY-MM-DD HH24:MI:SS.FF3'))*24*60+(提取时间从(到)时间戳(col1,'YYYY-MM-DD HH24:MI:SS.FF3')到(col2,'yyyyyy-MM-DD HH24:MI:SS.FF3'))的小时)+(提取时间戳(分钟从(到)时间戳(col1,'yyyyyyyy-MM-DD:MI:SS.FF3'))(col2,'YYYY-MM-DD HH24:MI:SS.FF3'))作为min_dff,@Tushar:I刚刚修复了第二个表达式(它以小时而不是分钟给出结果)。