我是否在MS Access中正确划分了时间?

时间:2016-03-18 13:52:29

标签: ms-access time ms-access-2010

我有一个有一堆轮班的场地,其中SH1是从早上6点到下午2点,SH2是从下午2点到晚上10点,而SH3是从晚上10点到早上6点。我只需要根据当前时间返回当前班次。

我尝试过的事情:

Switch(
    [Uf_Shift_Standard]=8,
        (Switch(
        (Time() >= #6 am# AND Time() < #2 pm#), "SH1",
        (Time() >= #2 pm# AND Time() < #10 pm#), "SH2",
        True, "SH3")
        ),

        [Uf_Shift_Standard]=10,
            (Switch(
            (Time() >= #5 am# AND Time() < #3 pm#), "SH1",
            True, "SH2")),

            [Uf_Shift_Standard]=12,
                (Switch(
                (Time() >= #3 am# AND Time() < #3 pm#), "SH1",
                True, "SH2")),

                1=1,
                    (Switch(
                    (Time() >= #6 am# AND Time() < #2 pm#), "SH1",
                    (Time() >= #2 pm# AND Time() < #10 pm#), "SH2",
                    True, "SH3"))
    )

注意:我已经更新了我的代码,以便考虑我们拥有的3种不同类型的班次 - 8,10和12小时班次。但是,我没有收到错误:You tried to execute a query that does not include the specified expression 'tableA.job="something" And tableB.suffix="12" And tableB.shift=Switch([Uf_Shift_Standard]=8,Switch...[the rest of the long expression continues here...]

'tableA.job="something" And tableB.suffix="12"部分处理移位列之前有其自身标准的其他2列。

1 个答案:

答案 0 :(得分:1)

可以使用单行代码完成:

Shift = "SH" & 1 + DatePart("h", DateAdd("h", -6, Time())) \ 8

在GUI设计器中:

Shift: "SH" & 1+DatePart("h",DateAdd("h",-6,Time()))\8