首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问报告-计算2次之间的时间

访问报告-计算2次之间的时间
EN

Stack Overflow用户
提问于 2015-07-27 20:45:41
回答 1查看 36关注 0票数 1

我有一个带有访问前端的SQL时间关闭数据库。我目前在报告中有BeginTimeOff和EndTimeOff字段。在我的SQL数据库中,这些是Time(7)字段。我想要一个新的字段来显示时差。我试图让“控制源”等于:

代码语言:javascript
复制
=DateDiff("n",CDate([BeginTimeOff]),CDate([EndTimeOff])) 

代码语言:javascript
复制
=DateDiff("n",[BeginTimeOff],[EndTimeOff]) 

代码语言:javascript
复制
= [EndTimeOff] - [BeginTimeOff]

我什么都找不到了。我可以把约会减得很好,只是不算次数。帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-28 02:59:24

Access不具有纯时间字段类型(Access Date/Time字段具有日期和时间组件),而且ODBC链接表中的任何未知字段类型通常映射到Text。因此,如果您有一个带有time(7)列的Server表.

代码语言:javascript
复制
CREATE TABLE [dbo].[TimeTest](
    [Id] [int] NOT NULL,
    [BeginTimeOff] [time](7) NULL,
    [EndTimeOff] [time](7) NULL
    ...

然后Access中相应的ODBC链接表将具有Text(255)列:

如果要直接使用链接表中的列,则必须将值转换为Access将接受的形式,然后才能使用像DateDiff()这样的函数对它们进行计算。具体来说,访问日期/时间值不支持小数秒,因此您必须删除它们。那是,

代码语言:javascript
复制
CDate("07:59:00.0000000")

使用“类型错配”错误(运行时错误13)将失败,而

代码语言:javascript
复制
CDate("07:59:00")

效果很好。您可以使用字符串操作函数(如InStr()Left()Mid()等)来去除字符串的小数部分。

另一种方法是创建一个将DATE(7)列转换为DATETIME的Server视图

代码语言:javascript
复制
CREATE VIEW [dbo].[TimeView]
AS
SELECT
    Id, 
    DATEADD(day, -2, CONVERT(DATETIME, BeginTimeOff)) AS BeginTimeOff, 
    DATEADD(day, -2, CONVERT(DATETIME, EndTimeOff)) AS EndTimeOff
FROM dbo.TimeTest

然后,如果链接到该视图,则这些列将显示为Access中的Date/Time

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31662968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档