【问题标题】:replacing (Date_format,Case) in MySQL format into (Format,IIF) in ms-access format将 MySQL 格式的 (Date_format,Case) 替换为 ms-access 格式的 (Format,IIF)
【发布时间】:2013-08-15 05:34:14
【问题描述】:

我有两张这样的桌子

1.HR_Personnel

+-----+---------------+--------+
| ID  | NIP           | Name   |
+---------------------+--------+
| 1   | 050803075200  | Teguh  | 
| 2   | 050803075201  | Supomo | 
+-----+---------------+--------+

2.TA_Record_Info

+-----+-----+---------+-----------------------+
| NIP | NIP | Nama    | Date_Time             |
+-----+-----+---------+-----------------------+
| 2   | 2   | Supomo  | 2013-02-20 07:45:57   | 
| 2   | 2   | Supomo  | 2013-02-20 17:24:13   | 
| 1   | 1   | Supomo  | 2013-02-20 18:18:07   | 
| 2   | 2   | Supomo  | 2013-02-21 07:53:40   | 
| 2   | 2   | Teguh   | 2013-02-21 20:31:02   | 
| 1   | 1   | Teguh   | 2013-02-21 17:31:57   | 
+-----+-----+---------+-----------------------+

Date_Time 是字符串格式。

然后我想让它像这张桌子:

+----------------+---------+-------------+-------------+-------------+
| NIP            | Nama    | Date        | In          | Out         |
+----------------+---------+-------------+-------------+-------------+
| 050803075200   | Teguh   | 2013-02-21  |             | 18:18:07    |
| 050803075200   | Teguh   | 2013-02-20  |             | 20:31:02    | 
| 050803075201   | Supomo  | 2013-02-20  | 07:45:57    | 17:24:13    | 
| 050803075201   | Supomo  | 2013-02-21  | 07:53:40    | 17:31:57    |
+----------------+---------+-------------+-------------+-------------+

我已经根据我之前的问题DateTime String to Date, In Time and Out Time 的答案尝试在 MySQL 查询中。成功了这是查询代码:

SELECT p.Per_Code as NIP,
   p.Per_Name as Nama,
   DATE_FORMAT(a.Date_Time, '%Y-%m-%d') as date,
   Case Min(a.Date_Time)
    When Max(a.Date_Time) 
     Then '' 
     Else DATE_FORMAT(a.Date_Time, '%H:%i:%s') 
   End as InTime,
   DATE_FORMAT(max(a.Date_Time), '%H:%i:%s') as OutTime
FROM  HR_Personnel as p
RIGHT JOIN  TA_Record_Info a
ON p.ID=a.Per_ID
Group By NIP,
     Nama,
     DATE_FORMAT(Date_Time, '%Y-%m-%d')

可以看MYSQL查询测试in Here

然后我在 ms Access 中尝试过,但仍然无法正常工作。这是查询代码:

SELECT p.Per_Code AS NIP,
   p.Per_Name AS Nama,
   Format (a.Date_Time, "yyyy-mm-dd") as date,
   IIF(
       (Min(a.Date_Time) = Max(a.Date_Time)) ,
        '',
        Format (a.Date_Time, "hh/mm/ss")
   )as InTime,
   Format (Max(a.Date_Time), "hh/mm/ss") AS OutTime 
FROM HR_Personnel AS p 
RIGHT JOIN TA_Record_Info a 
ON p.ID=a.Per_ID 
GROUP BY p.Per_Code,
         p.Per_Name,
         Format (a.Date_Time, "yyyy-mm-dd")

我已经在我的 PDO:Querry 中尝试过,但仍然显示错误消息:

致命错误:调用成员函数 fetch()

我不知道如何在 ms-access 中进行测试。我只知道PHP and MySql。我使用ms-access 数据库,因为我的信息系统连接了一个只有 ms-access 数据库的指纹。
我必须怎么做才能解决这个问题?

【问题讨论】:

  • 嗨 HansUp 我找到了解决问题的方法。感谢您的回复。干杯。

标签: mysql ms-access datetime case date-format


【解决方案1】:

问题已解决。查询必须是这样的:

SELECT p.Per_Code AS NIP,
       p.Per_Name AS Nama,
       Format (a.Date_Time, "yyyy-mm-dd") as date,
       IIF(
           (Min(a.Date_Time) = Max(a.Date_Time)) ,
           '',
           Format (Min(a.Date_Time), "hh/mm/ss")
       )as InTime,
       Format (Max(a.Date_Time), "hh/mm/ss") AS OutTime
FROM HR_Personnel AS p 
RIGHT JOIN TA_Record_Info a 
ON p.ID=a.Per_ID 
GROUP BY p.Per_Code,
     p.Per_Name,
     Format (a.Date_Time, "yyyy-mm-dd")

错误在第 7 行。 以前的查询是这样的:

格式(a.Date_Time,“hh/mm/ss”)

然后改成这样:

格式(Min(a.Date_Time), "hh/mm/ss")

我认为出现错误是因为 a.Date_Time 无法被 ms-access 识别。

最后,感谢 HansUp 继续回答我的问题。干杯:D

【讨论】:

    猜你喜欢
    • 2020-11-23
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2016-02-21
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多