首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >拆分日期和时间,然后添加到另一个表列中

拆分日期和时间,然后添加到另一个表列中
EN

Stack Overflow用户
提问于 2019-05-30 23:18:09
回答 1查看 39关注 0票数 -1

编辑:

我想感谢@jimmix给了我一些开始写上一篇文章的想法,但不幸的是,我的文章被搁置了。由于缺乏细节。

但这是真实的场景,如果我没有很好地解释我的问题,我很抱歉。

从我的CSV文件中,我有一个原始数据,然后我将使用我的upload()函数上传到我的phpmyadmin数据库中,表名为"tbldumpbio",

查看下面的表结构:(Tbldumpbio)

在我的表tbldumpbio data中,我有一个名为processTimesheet()的函数。

代码如下:

代码语言:javascript
复制
public function processTimesheet(){
        $this->load->model('dbquery');          

            $query = $this->db->query("SELECT * FROM tbldumpbio");

            foreach ($query->result() as $row){

            $dateTimeExplArr = explode(' ', $row->datetimex);

            $dateStr = $dateTimeExplArr[0];
            $timeStr = $dateTimeExplArr[1];

            if($row->status='C/Out' and !isset($timeStr) || empty($timeStr) ){
                $timeStrOut ='';
            } else {
                $timeStrOut = $dateTimeExplArr[1];
            }

            if($row->status='C/In' and !isset($timeStr) || empty($timeStr) ){
                $timeStrIn ='';     
            } else {
                $timeStrIn = $dateTimeExplArr[1];   
            }

            $data = array(
                'ID' => '',
                'companyAccessID' => '',
                'name' => $row->name,
                'empCompID' => $row->empid,
                'date' => $dateStr,
                'timeIn' => $timeStrIn,
                'timeOut' => $timeStrOut,
                'status' => '',
                'inputType' => ''       
            );              
            $this->dbquery->modInsertval('tblempbioupload',$data);


            }
    }

此函数会将另一个数据添加到另一个名为"tblempbioupload“的表中。但以下是我得到的结果:

请参考以下数据:(Tblempbioupload)

问题是:

如果状态为‘C/ In’,则应添加超时数据;如果状态为‘C/ duplicated

  • Time’,则应添加超时数据;如果状态为‘C/

  • ’,则应添加超时数据;如果状态为‘C/’,则应添加超时数据

预期的结果应该是这样的:

EN

回答 1

Stack Overflow用户

发布于 2019-05-30 23:45:10

我看到的第一个问题是,您的时间表示为15:xx:yy PM,这是一个模棱两可的格式,因为您可以写成15:xx:yy AM,这将是无效的时间。

也就是说,如果您想要的是每次日期更改时都应该写入一行,则应该这样做:将前一个日期存储在变量中,然后当您移动到源表中的下一个记录时,将该日期与前一个日期进行比较,如果日期不同,则插入该行,否则只需读取下一位数据。

请记住,只有当您确定输入行的顺序正确时,这种方法才有效,这意味着首先按EmpCompId排序,然后按日期排序,然后按时间排序;如果不是这样,则此过程不能正常工作。

我可能会尝试另一种方法:如果(但从您的问题中不清楚)每个empcompid和date只有一行,我将在源表上进行分组查询,查找最小进入时间,另一个查找最大退出日期,并将它们用作insert查询的源。

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

https://stackoverflow.com/questions/56381042

复制
相关文章

相似问题

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