c#中如何将从Access数据库中取出两个'时间日期'类型的值进行减法运算

c#中如何将从Access数据库中取出两个'时间日期'类型的值进行减法运算,第1张

两个'时间日期'类型的值进行减法运算,目的是获取相差的天数吧?如果没有现成的转换函数,只能自己编程计算。以某个日期时间为基准,分别将两个日期的年、月、日换算成总天数后,就可相减了。这个应该不难吧。

首先在数据库里建立一张test表(mysql的数据库)

1 CREATE TABLE `NewTable` (

2 `id` int(10) NOT NULL AUTO_INCREMENT ,

3 `time1` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP ,

4 `time2` timestamp NULL DEFAULT NULL ,

5 PRIMARY KEY (`id`)

6 )

然后录入两条数据,用如下语句查询

SELECT time2,time1,time2-time1 FROM `test`;

你这个可能是 CASE WHEN 的问题

第一种情况下, 结果是 字符类型的 ‘已到期’

第二种情况下, 结果是 数字类型的

也就是你一个查询, 其中某一列的数据类型, 又是字符, 又是数字的。

导致查询出现错误了。

你尝试在后面那里 加一个 TO_CHAR() 看看

TO_CHAR(day (TIMESTAMP (screated_date)) - day (current date), '999' )

有时候想在数据库中存储插入数据时的时间,比如有一条评论,我想在把评论内容存入数据库的时候把存储评论时的时间也存到数据库中。当然这个过程是自动完成的,即不需要我在业务逻辑代码中还得初始化一个Date对象然后再把这个Date对象转换为某种格式存到数据库中。

Oracle提供了时间戳数据类型Timestamp来支持这个 *** 作。当一个字段定义成Timestamp类型时,通过在insert语句中指定value为Sysdate就可以将执行insert语句时的时间存入数据库中。例如:

然后执行查询:

Select commenttime From webcomments;

结果显示commenttime 列的值是这种样子的:18-4月 -10 033106000000 下午

这和我们的预想不太相符。我们想查询出来的时间应该是这个样子的:2010-04-18 13:10:57

这要是用to_char函数,利用它我们可以把一个日期数据转换为任何我们想要的格式。例如这样写select语句:

得到的结果是2010-04-18 15:31:06

要了解的一点是:如果单单是想存储时间的话,Oracle还提供了一种日期类型Date,使用它也可以存储插入数据时的时间,只要插入数据时也赋值为 Sysdate就可以。并且在查询时也一样可以使用to_char函数得到想要的格式。那问题就是:为什么我们要使用Timestamp类型呢?

date和Timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒Timestamp数据的格式化显示和 Date数据一样。注意,to_char函数支持Date和Timestamp,但是trunc却不支持Timestamp数据类型。这已经清楚表明了在当两个时间的差别极度重要的情况下,使用Timestamp数据类型要比Date数据类型更确切。

并且:两个Date类型相减的结果是以“天”为单位的,而两个Timestamp类型相减的结果是直观的显示为“多少天+多少小时+多少分钟+多少秒+多少小数秒”。例如:

查询结果显示(多少天 多少小时 多少分钟 多少秒 多少小数秒 ):000000001 01:30:10100000

最后,Date转换为Timestamp要使用CAST函数,例如:

以上就是关于c#中如何将从Access数据库中取出两个'时间日期'类型的值进行减法运算全部的内容,包括:c#中如何将从Access数据库中取出两个'时间日期'类型的值进行减法运算、sql中两个表示时间的字符串类型如何相减,得到值、db2 日期相减等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9502387.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存