如何实现时间的相减,并存入数据库?

boycenchen 2003-10-16 04:20:09
有一个表,它有三个域time_start,time_end,day_between。其中day_between=time_end - time_start, day_between为两个时间相减的天数。在一个dbgrid里面,如何实现当time_start,time_end其一改变时,day_between实现自动计算。谢谢
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
njlindy 2003-10-16
  • 打赏
  • 举报
回复
添加一个计算型字段
angle097113 2003-10-16
  • 打赏
  • 举报
回复
datedif()计算
qingke21 2003-10-16
  • 打赏
  • 举报
回复
添加一个计算子段就行了
hnhb 2003-10-16
  • 打赏
  • 举报
回复
那可以不要这个字段了,用计算字段解决.
如果仍要这个字段的话,用触发器解决
star_of_light 2003-10-16
  • 打赏
  • 举报
回复

Transact-SQL 参考


DATEADD
在向指定日期加上一段时间的基础上,返回新的 datetime 值。

语法
DATEADD ( datepart , number, date )

参数
datepart

是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。

日期部分 缩写
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms


number

是用来增加 datepart 的值。如果指定一个不是整数的值,则将废弃此值的小数部分。例如,如果为 datepart 指定 day,为 number 指定 1.75,则 date 将增加 1。

date

是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。有关指定日期的更多信息,请参见 datetime 和 smalldatetime。

如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。

返回类型
返回 datetime,但如果 date 参数是 smalldatetime,返回 smalldatetime。

示例
此示例打印出 pubs 数据库中标题的时间结构的列表。此时间结构表示当前发布日期加上 21 天。

USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
GO

下面是结果集:

timeframe
---------------------------
Jul 3 1991 12:00AM
Jun 30 1991 12:00AM
Jul 21 1991 12:00AM
Jul 13 1991 12:00AM
Jun 30 1991 12:00AM
Jul 9 1991 12:00AM
Mar 14 1997 5:09PM
Jul 21 1991 12:00AM
Jul 3 1994 12:00AM
Mar 14 1997 5:09PM
Nov 11 1991 12:00AM
Jul 6 1991 12:00AM
Oct 26 1991 12:00AM
Jul 3 1991 12:00AM
Jul 3 1991 12:00AM
Nov 11 1991 12:00AM
Jul 3 1991 12:00AM
Jul 3 1991 12:00AM

(18 row(s) affected)


请参见

CAST 和 CONVERT

数据类型

日期和时间函数

时间格式

©1988-2000 Microsoft Corporation。保留所有权利。
boycenchen 2003-10-16
  • 打赏
  • 举报
回复
谢谢。我也知道daysbetween可以算出天数,用trunc也可以。但我想知道如何将两个时间的差自动地在dbgrid上显示出来。
hnhb 2003-10-16
  • 打赏
  • 举报
回复
uses DateUtils;
...
...
var
i:Integer;
begin
i:=DaysBetween(日期1,日期2)+1; // i为日期1和日期2的天数
end;

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧