我想比较SQL Server(类型datetime-16)和db2/400(类型Z)的日期/时间。比较日期db2/400与SQL Server
通常我想知道有60秒18点44和18:45
之间每一个都有稍微不同的显示特性。
SQL Server 2016-07-26 18:45:00.000
Db2/400 2016-07-26-18.45.00.000000
如果我这样做对我的DB2数据库:
SELECT
MYDATETIME,
'2016-07-26 18:44:00.000',
MYDATETIME - '2016-07-26 18:44:00.000'
FROM @dates
我得到这个
MYDATETIME Constant value Numeric Expression
2016-07-26-18.45.00.000000 2016-07-26 18:44:00.000 100.000000
DB2 SQL显得相当大方接受略有不同的格式。
但是,查询告诉我,1分钟差= 100.看起来我有一个基地10比较发生在这里。
使用DB2时间戳功能,我得到了相同的结果
SELECT
MYDATETIME,
'2016-07-26 18:44:00.000',
MYDATETIME - timestamp('2016-07-26-18.44.00.000000')
FROM @dates
我怎么能进行比较,这将使我在几分钟(或数小时或数天)的区别?
它实际上[给你一个格式化值(https://www.ibm。 com/support/knowledgecenter/SSEPEK_10.0.0/sqlref/src/tpc/db2z_bif_timestampdiff.html):'100.000000'实际上是'1分钟','00秒','000000小数秒'。请注意,该值是相对的(即“1个月”),因此可能无用。为什么你想要差异呢? –
发条 - 我想问一些问题,比如“自上次运行多久以来”,“向我展示最近24小时的交易”,“提取在昨天下午2点运行,告诉我什么是新的。”。谢谢 –
你几乎从不想在查询中使用差异,因为它会导致数据库忽略指示。一般来说,您想构建限制并执行范围查询。应用层语言比几乎所有的RDBMS都有更好的获取持续时间差异的方法,所以在显示时间只需要数学计算。你如何试图在两个数据库之间进行通信?为什么不通过所需的开始/结束值? –