Php 日期和时间拆分,然后添加到另一个表列中
编辑: 我想感谢@jimmix给了我一些想法来开始我的上一篇文章,但不幸的是,我的文章被搁置了。由于缺乏细节 但这里是真实的情况,如果我没有很好地解释我的问题,我很抱歉 从我的CSV文件中,我有一个原始数据,然后我将使用中的upload()函数将其上载到我的phpmyadmin数据库中,表名为“tbldumpbio” 见下表结构:(tbldumpbio) 从表tbldumpbio data中,我有一个名为processTimesheet()的函数 代码如下:Php 日期和时间拆分,然后添加到另一个表列中,php,mysql,codeigniter,datetime,phpmyadmin,Php,Mysql,Codeigniter,Datetime,Phpmyadmin,编辑: 我想感谢@jimmix给了我一些想法来开始我的上一篇文章,但不幸的是,我的文章被搁置了。由于缺乏细节 但这里是真实的情况,如果我没有很好地解释我的问题,我很抱歉 从我的CSV文件中,我有一个原始数据,然后我将使用中的upload()函数将其上载到我的phpmyadmin数据库中,表名为“tbldumpbio” 见下表结构:(tbldumpbio) 从表tbldumpbio data中,我有一个名为processTimesheet()的函数 代码如下: public function p
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/Out”,则应添加超时数据
我看到的第一个问题是,时间表示为15:xx:yy PM,这是一种不明确的格式,因为人们可以写15:xx:yy AM,而这不是一个有效的时间 也就是说,如果您想要的是每次日期更改时都要写入一行,那么您应该这样做:将上一个日期存储在变量中,然后当您移动到源表中的下一条记录时,将该日期与上一条记录进行比较,如果它们不同,则插入该行,否则,您只需继续读取下一位数据 请记住,只有当您确定输入行的顺序准确时,这种方法才有效,这意味着先按EmpCompId排序,然后按日期排序,再按时间排序;如果没有,这个程序就不能正常工作
我可能会尝试另一种方法:如果每个empcompid和date只显示一行(但您的问题并不清楚),我会对源表进行分组查询,查找最短进入时间,另一个查找最长退出日期,并将它们作为插入查询的源。+1。以这种方式存储日期时间确实很奇怪,因为它是军事时间。以需要访问的方式存储数据是最有意义的。我认为,如果只使用上午0-12点和下午0-12点,那就可以了,但我很确定任何SQL server都会拒绝在时间/日期时间字段中使用上午15:00:00的内容。。。我不理解你对以访问方式存储数据的赞扬……我不是询问者