Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Ms access 为什么Access不能在表达式中正确解释此时间范围?_Ms Access_Ms Access 2010_Dateadd - Fatal编程技术网

Ms access 为什么Access不能在表达式中正确解释此时间范围?

Ms access 为什么Access不能在表达式中正确解释此时间范围?,ms-access,ms-access-2010,dateadd,Ms Access,Ms Access 2010,Dateadd,我正在为MS Access中的查询编写表达式。总体目标是创建一个新的领域,承认仅仅因为第三班晚上10点到早上6点跨越了午夜,它仍然应该回到他们开始的最初一天。我很难让它工作 伪代码: 日期:如果[RecordDate]的时间介于12:00AM和6:00AM之间,则返回[RecordDate]-1天[RecordDate] 实际代码 日期:IIfFormat[dbo_jobtran]![RecordDate],短时间介于00:00:00和6:00:00之间,DateAddd,-1,格式为[dbo_

我正在为MS Access中的查询编写表达式。总体目标是创建一个新的领域,承认仅仅因为第三班晚上10点到早上6点跨越了午夜,它仍然应该回到他们开始的最初一天。我很难让它工作

伪代码:

日期:如果[RecordDate]的时间介于12:00AM和6:00AM之间,则返回[RecordDate]-1天[RecordDate]

实际代码

日期:IIfFormat[dbo_jobtran]![RecordDate],短时间介于00:00:00和6:00:00之间,DateAddd,-1,格式为[dbo_jobtran]![RecordDate],短日期[dbo_jobtran]![记录日期]

输出不正确

预期产量

Format返回一个字符串值。当您试图将字符串值与日期/时间值进行比较时,您的基础是不可靠的。比较需要访问将其中一个值强制转换为另一个值的数据类型。有时Access会正确地按您希望的方式进行转换,但不要依赖于此

检查您面临的问题的另一种方法是测试此查询:

选择格式2015年11月8日5:55:21,00:00:00和06:00:00之间的短时间作为Expr2; Access为Expr2返回0 False

始终使用日期/时间值与另一个日期/时间值进行比较:

选择 j、 记录日期, IIf 时间值j.RecordDate介于CDate0和CDate.25之间, DateValuej.RecordDate-1, DateValuej.RecordDate 开始日期 来自dbo_jobtran作为j 注:

TimeValue返回日期/时间值的时间部分,并返回1899年12月30日第0天的时间。Access中不存在仅限时间的数据类型或仅限日期的数据类型,我们只有日期/时间。 DateValue返回日期/时间值中的日期,其中midnite 12 AM为一天中的时间。 CDate0是1899年12月30日上午12点 日期:1899年12月30日上午6点 如果您更喜欢DateAdd,请将DateAdd'd',-1,DateValuej.RecordDate替换为我使用DateValuej.RecordDate-1的地方 Format返回一个字符串值。当您试图将字符串值与日期/时间值进行比较时,您的基础是不可靠的。比较需要访问将其中一个值强制转换为另一个值的数据类型。有时Access会正确地按您希望的方式进行转换,但不要依赖于此

检查您面临的问题的另一种方法是测试此查询:

选择格式2015年11月8日5:55:21,00:00:00和06:00:00之间的短时间作为Expr2; Access为Expr2返回0 False

始终使用日期/时间值与另一个日期/时间值进行比较:

选择 j、 记录日期, IIf 时间值j.RecordDate介于CDate0和CDate.25之间, DateValuej.RecordDate-1, DateValuej.RecordDate 开始日期 来自dbo_jobtran作为j 注:

TimeValue返回日期/时间值的时间部分,并返回1899年12月30日第0天的时间。Access中不存在仅限时间的数据类型或仅限日期的数据类型,我们只有日期/时间。 DateValue返回日期/时间值中的日期,其中midnite 12 AM为一天中的时间。 CDate0是1899年12月30日上午12点 日期:1899年12月30日上午6点 如果您更喜欢DateAdd,请将DateAdd'd',-1,DateValuej.RecordDate替换为我使用DateValuej.RecordDate-1的地方
RecordDate               Expression
8/10/2015 11:58:09 PM    8/10/2015
8/11/2015 12:07:52 AM    8/11/2015
8/11/2015 5:55:21 AM     8/11/2015
8/11/2015 6:17:06 AM     8/11/2015
RecordDate               Expression
8/10/2015 11:58:09 PM    8/10/2015
8/11/2015 12:07:52 AM    8/10/2015
8/11/2015 5:55:21 AM     8/10/2015
8/11/2015 6:17:06 AM     8/11/2015