select timediff('23:40:00', '18:30:00'); --两时间相减
SELECT substring( timediff('23:40:00', '18:30:00'),1,5) ----“05:10”相减返回小时:分钟select datediff('2008-08-08', '2008-08-01'); -- 7 -----两日期相减select TO_DAYS('2008-09-08')-TO_DAYS('2008-08-08') -----两日期相减
SELECT substring('2009-06-17 10:00:00', 1, 10 ) ----从datetime中提取“日期”
(*********************时间戳是从1970年1月1日开始到目标时间所经过的秒数.
可以进行两个datetime时间间隔的运算******************************)
mysql设置两个日期格式相减的方式:
MySql计算两个日期时间的差函数:
第一种:TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YEAR几种类型,第二个和第三个参数是待比较的两个时间,比较是后一个时间减前一个时间,具体用法如下:
SELECT TIMESTAMPDIFF(DAY,'2012-10-01','2013-01-13');
返回结果是104,这里比较的是两个时间的天数差;
SELECT TIMESTAMPDIFF(MONTH,'2012-10-01','2013-01-13');
这里比较的是两个时间的月份,返回的结果是3;
第二种方法: DATEDIFF函数,就传入两个日期函数,比较的DAY天数,第一个参数减去第二个参数的天数值,具体用法如下:
SELECT DATEDIFF('2013-01-13','2012-10-01');
返回的结果也是104。
另外其它的日期函数,
now()函数返回的是当前时间的年月日时分秒,如:2008-12-29 16:25:46
CURDATE()函数返回的是年月日信息: 如:2008-12-29
CURTIME()函数返回的是当前时间的时分秒信息,如:16:25:46
另外,如果我们想对一个包含年月日时分秒日期格式化成年月日日期,可以使用DATE(time)函数,如
DATE(now()) 返回的是 2008-12-29
datediff()两个日期相减函数
SELECT TIMESTAMPDIFF(MINUTE,NOW(),flowExpireDate)AS minsRemaining FROM FlowDealOrders WHERE SN='172150210001156' AND orderStatus='使用中' AND sysStatus=1
mysql中可使用TIMESTAMPDIFF函数
格式为 TIMESTAMPDIFF(显示时间格式,开始时间,结束时间)
第一个属性还可以是:小时、分钟、秒等等
、MySQL中两个DateTime字段相减
假定表名为tblName,两个DateTime字段名分别为beginDateTime,endDateTime,以下是相关两个mysql日期字段相减的SQL语句,这种方式两字段跨天,月,年都无问题。
得到两个日期字段之间的秒数
selec t (UNIX_TIMESTAMP(endDateTime)- UNIX_TIMESTAMP(beginDateTime)) dif_second fromtblName
得到两个日期字段之间的分数
selec t (UNIX_TIMESTAMP(endDateTime)- UNIX_TIMESTAMP(beginDateTime))/60 dif_minute fromtblName
得到两个日期字段之间的天数
selec t (UNIX_TIMESTAMP(endDateTime)- UNIX_TIMESTAMP(beginDateTime))/(60*60*24) dif_minute fromtblName
二、MySQL中两个Time字段相减
如果两个字段都为Time类型,如果两个时间都在同一天,相减可以得到相差的秒数,但如果跨天,月,年都有问题。
selec t (TIME_TO_SEC(endDateTime)- TIME_TO_SEC(beginDateTime)) dif_second from tblName
mysql
中计算
两个
Datetime类型的
时间
间隔(单位为秒),需要转换:
1.跨天,月,年都无问题
select (UNIX_TIMESTAMP(atime) - UNIX_TIMESTAMP(btime)) sec
from abc
2.只能用在Time类型
DB类<?php
header('Content-Type:text/html; charset=utf-8');
basename($_SERVER['PHP_SELF'])=='
mysql
.inc.php'&&header;
('Location:http://'.$_SERVER['HTTP_HOST']); //禁止直接访问本页
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※
【文件名】:
mysql
.inc.php
【作 用】:
mysql
数据库操作类
【作 者】: Riyan
【版 本】: version 2.0
【修改
日期
】: 2010/02/11
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※
class
mysql
{
private $host; // 数据库主机
private $user; // 数据库用户名
private $pass; // 数据库密码
private $data; // 数据库名
private $conn; // 数据库连接标识
private $sql; // sql语句
private $code; // 数据库编码,GBK,UTF8,GB2312
private $result; // 执行query命令的结果数据集
private $errLog=true; // 是否开启错误日志,默认开启
private $showErr=true; // 显示所有错误,具有安全隐患,默认开启
private $pageNo=1; // 当前页
private $pageAll=1; // 总页数
private $rsAll=0; // 总记录
private $pageSize=10; // 每页显示记录条数
/******************************************************************
--
函数
名:__construct($host,$user,$pass,$data,$code,$conn)
-- 作 用:构造
函数
-- 参 数:$host 数据库主机地址(必填)
$user 数据库用户名(必填)
$pass 数据库密码(必填)
$data 数据库名(必填)
$conn 数据库连接标识(必填)
$code 数据库编码(必填)
-- 返回值:无
-- 实 例:无
*******************************************************************/
public function __construct($host,$user,$pass,$data,$code='utf8',
$conn='conn'){
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->data=$data;
$this->conn=$conn;
$this->code=$code;
$this->connect();
public function __get($name){return $this->$name;}
public function __set($name,$value){$this->$name=$value;}
// 数据库连接
private function connect(){
if ($this->conn=='pconn') $this->conn=
mysql
_pconnect($this-
>host,$this->user,$this->pass); // 永久链接
else $this->conn=
mysql
_connect($this->host,$this->user,$this-
>pass); // 临时链接
if (!$this->conn) $this->show_error('无法连接服务器');
$this->select_db($this->data);
$this->query('SET NAMES '.$this->code);
$this->query("SET CHARACTER_SET_CLIENT='{$this->code}'");
$this->query("SET CHARACTER_SET_RESULTS='{$this->code}'");
// 数据库选择
public function select_db($data){
$result=
mysql
_select_db($data,$this->conn);
if (!$result) $this->show_error('无法连接数据库'.$data);
return $result;
/******************************************************************
--
函数
名:get_info($num)
-- 作 用:取得
MySQL
服务器信息
-- 参 数:$num 信息值(选填)
-- 返回值:字符串
-- 实 例:无
*******************************************************************/
public function get_info($num){
switch ($num){
case 1:
return
mysql
_get_server_info(); // 取得
MySQL
服务器信息
break;
case 2:
return
mysql
_get_host_info(); // 取得
MySQL
主机信息
break;
case 3:
return
mysql
_get_proto_info(); // 取得
MySQL
协议信息
break;
default:
return
mysql
_get_client_info(); // 取得
MySQL
客户端信息
/******************************************************************
--
函数
名:query($sql)
-- 作 用:数据库执行语句,可执行查询添加修改删除等任何sql语句
-- 参 数:$sql sql语句(必填)
-- 返回值:布尔
-- 实 例:无
*******************************************************************/
public function query($sql){
if (empty($sql)) $this->show_error('SQL语句为空');
$this->sql=preg_replace('/ {2,}/',' ',trim($sql));
$this->result=
mysql
_query($this->sql,$this->conn);
if (!$this->result) $this->show_error('SQL语句有误',true);
return $this->result;
/******************************************************************
--
函数
名:create_db($data)
-- 作 用:创建添加新的数据库
-- 参 数:$data 数据库名称(必填)
-- 返回值:字符串
-- 实 例:无
*******************************************************************/
public function create_database($data=''){$this->query("CREATE
DATABASE {$data}");}
// 查询服务器所有数据库
public function show_database(){
$this->query('SHOW DATABASES');
$db=array();
while ($row=$this->fetch_array()) $db[]=$row['Database'];
return $db;
// 查询数据库下所有的表
public function show_tables($data=''){
if (!empty($data)) $db=' FROM '.$data;
$this->query('SHOW TABLES'.$data);
$tables=array();
while ($row=$this->fetch_row()) $tables[]=$row[0];
return $tables;
/******************************************************************
--
函数
名:copy_tables($tb1,$tb2,$where)
-- 作 用:复制表
-- 参 数:$tb1 新表名(必填)
$tb2 待复制表的表名(必填)
$Condition 复制条件(选填)
-- 返回值:布尔
-- 实 例:无
*******************************************************************/
public function copy_tables($tb1,$tb2,$Condition=''){$this->query
("SELECT * INTO `{$tb1}` FROM `{$tb2}` {$Condition}");}
/******************************************************************
--
函数
名:Get($Table,$Fileds,$Condition,$Rows)
-- 作 用:查询数据
-- 参 数:$Table 表名(必填)
$Fileds 字段名,默认为所有(选填)
$Condition 查询条件(选填)
$Rows 待查询记录条数,为0表示不限制(选填)
-- 返回值:布尔
-- 实 例:$DB->Get('mydb','user,password','order by id desc',10)
*******************************************************************/
public function Get($Table,$Fileds='*',$Condition='',$Rows=0){
if (!$Fileds) $Fileds='*';
if ($Rows>0) $Condition.=" LIMIT 0,{$Rows}";
$sql="SELECT {$Fileds} FROM `{$Table}` {$Condition}";
return $this->query($sql);
// 只查询一条记录
public function GetRs($Table,$Fileds='*',$Condition=''){
if (!$Fileds) $Fileds='*';
$this->query("SELECT {$Fileds} FROM `{$Table}` {$Condition}
LIMIT 0,1");
return $this->fetch_array();
/******************************************************************
--
函数
名:Add($Table,$Data)
-- 作 用:添加数据
-- 参 数:$Table 表名(必填)
$Data 待添加数据,可以为数组(必填)
-- 返回值:布尔
-- 实 例:$DB->Add('mydb',array
('user'=>'admin','password'=>'123456','age'=>'18') 数组类型
$DB->Add('mydb','user=admin,password=123456,age=18') 字符
*******************************************************************/
public function Add($Table,$Data){
if (!is_array($Data)){
$arr=explode(',',$Data);
$Data=array();
foreach ($arr as $val){
list($key,$val)=explode('=',$val);
if (!$val) $val='';
$Data[$key]=$val;
$Fileds='`'.implode('`,`',array_keys($Data)).'`';
$Value="'".implode("','",array_values($Data))."'";
return $this->query("INSERT INTO `{$Table}` ({$Fileds}) VALUES
({$Value})");
/******************************************************************
--
函数
名:Set($Table,$Data,$Condition,$unQuot)
-- 作 用:更改数据
-- 参 数:$Table 表名(必填)
$Data 待更改数据,可以为数组(必填)
$Condition 更改条件(选填)
$unQuot 不需要加引号的字段,用于字段的
加减
运算等情况,多个
字段用,分隔或者写入一个数组(选填)
-- 返回值:布尔
-- 实 例:$DB->Set('mydb',array
('user'=>'admin','password'=>'123456','WHERE id=1') 数组类型
$DB->Set('mydb',"user='admin',password='123456'",'WHERE
id=1') 字符串类型
*******************************************************************/
public function Set($Table,$Data,$Condition='',$unQuot=''){
if (is_array($Data)){
if (!is_array($unQuot)) $unQuot=explode(',',$unQuot);
foreach ($Data as $key=>$val){
$arr[]=$key.'='.(in_array($key,$unQuot)?$val:"'$val'");
$Value=implode(',',$arr);
}else $Value=$Data;
return $this->query("UPDATE `{$Table}` SET {$Value}
{$Condition}");
/******************************************************************
--
函数
名:Del($Table,$Condition)
-- 作 用:删除数据
-- 参 数:$Table 表名(必填)
$Condition 删除条件(选填)
-- 返回值:布尔
-- 实 例:$DB->Del('mydb','id=1')
*******************************************************************/
public function Del($Table,$Condition=''){return $this->query
("DELETE FROM `{$Table}`".($Condition?" WHERE {$Condition}":''));}
// 取得结果数据
public function result($result=''){
if (empty($result)) $result=$this->result;
if ($result==null) $this->show_error('未获取到查询结果',true);
return
mysql
_result($result);
/******************************************************************
--
函数
名:fetch_array($Table,$Condition)
-- 作 用:根据从结果集取得的行生成关联数组
-- 参 数:$result 结果集(选填)
$type 数组类型,可以接受以下值:
MYSQL
_ASSOC,
MYSQL
_NUM 和
MYSQL
_BOTH(选填)
-- 返回值:布尔
-- 实 例:$DB->Del('mydb','id=1')
*******************************************************************/
public function fetch_array($result='',$type=
MYSQL
_BOTH){
if (empty($result)) $result=$this->result;
if (!$result) $this->show_error('未获取到查询结果',true);
return
mysql
_fetch_array($result,$type);
// 获取关联数组,使用$row['字段名']
public function fetch_assoc($result=''){
if (empty($result)) $result=$this->result;
if (!$result) $this->show_error('未获取到查询结果',true);
return
mysql
_fetch_assoc($result);
// 获取数字索引数组,使用$row[0],$row[1],$row[2]
public function fetch_row($result=''){
if (empty($result)) $result=$this->result;
if (!$result) $this->show_error('未获取到查询结果',true);
return
mysql
_fetch_row($result);
// 获取对象数组,使用$row->content
public function fetch_obj($result=''){
if (empty($result)) $result=$this->result;
if (!$result) $this->show_error('未获取到查询结果',true);
return
mysql
_fetch_object($result);
// 取得上一步 INSERT 操作产生的 ID
public function insert_id(){return
mysql
_insert_id();}
// 指向确定的一条数据记录
public function data_seek($id){
if ($id>0) $id=$id-1;
if (!
mysql
_data_seek($this->result,$id)) $this->show_error('指定
的数据为空');
return $this->result;
/******************************************************************
函数
名:num_fields($result)
作 用:查询字段数量
参 数:$Table 数据库表名(必填)
返回值:字符串
实 例:$DB->num_fields("mydb")
*******************************************************************/
public function num_fields($result=''){
if (empty($result)) $result=$this->result;
if (!$result) $this->show_error('未获取到查询结果',true);
return
mysql
_num_fields($result);
// 根据select查询结果计算结果集条数
public function num_rows($result=''){
if (empty($result)) $result=$this->result;
$rows=
mysql
_num_rows($result);
if ($result==null){
$rows=0;
$this->show_error('未获取到查询结果',true);
return $rows>0?$rows:0;
// 根据insert,update,delete执行结果取得影响行数
public function affected_rows(){return
mysql
_affected_rows();}
// 获取地址栏参数
public function getQuery($unset=''){ //$unset表示不需要获取的参数,
多个参数请用,分隔(例如:getQuery('page,sort'))
if (!empty($unset)){
$arr=explode(',',$unset);
foreach ($arr as $val) unset($_GET[$val]);
foreach ($_GET as $key=>$val) $list[]=$key.'='.urlencode($val);
return is_array($list)?implode('&',$list):'';
/******************************************************************
函数
名:getPage($Table,$Fileds,$Condition,$pageSize)
作 用:获取分页信息
参 数:$Table 表名(必填)
$Fileds 字段名,默认所有字段(选填)
$Condition 查询条件(选填)
$pageSize 每页显示记录条数,默认10条(选填)
返回值:字符串
实 例:无
*******************************************************************/
public function getPage($Table,$Fileds='*',$Condition='',
$pageSize=10){
if (intval($pageSize)>0){$this->pageSize=intval($pageSize);}
if (isset($_GET['page']) && intval($_GET['page'])){$this-
>pageNo=intval($_GET['page']);}
if (empty($Fileds)){$Fileds='*';}
$sql="SELECT * FROM `{$Table}` {$Condition}";
$this->query($sql);
$this->rsAll=$this->num_rows();
if ($this->rsAll>0){
$this->pageAll=ceil($this->rsAll/$this->pageSize);
if ($this->pageNo<1){$this->pageNo=1;}
if ($this->pageNo>$this->pageAll){$this->pageNo=$this-
>pageAll;}
$sql="SELECT {$Fileds} FROM `{$Table}` {$Condition}".$this-
>limit(true);
$this->query($sql);
return $this->rsAll;
// 构造分页limit语句,和getPage()
函数
搭配使用
public function limit($str=false){
$n=($this->pageNo-1)*$this->pageSize;
return $str?' LIMIT '.$n.','.$this->pageSize:$n;
// 显示分页,必须和getPage()
函数
搭配使用
public function showPage($number=true){
$pageBar='';
if ($this->pageAll>1){
$pageBar.='<ul class="page">'.chr(10);
$url=$this->getQuery('page');
$url=empty($url)?'?page=':'?'.$url.'&page;=';
if ($this->pageNo>1){
$pageBar.='<li><a href="'.$url.'1">首页</a></li>'.chr
(10);
$pageBar.='<li><a >pageNo-1).'">上页
</a></li>'.chr(10);
}else{
$pageBar.='<li class="stop"><span>首页</span></li>'.chr
(10);
$pageBar.='<li class="stop"><span>上页</span></li>'.chr
(10);
if ($number){
$arr=array();
if ($this->pageAll<6){
for ($i=0;$i<$this->pageAll;$i++) $arr[]=$i+1;
}else{
if ($this->pageNo<3)
$arr=array(1,2,3,4,5);
elseif ($this->pageNo<=$this->pageAll&&$this-
>pageNo>($this->pageAll-3))
for ($i=1;$i<6;$i++) $arr[]=$this->pageAll-5+$i;
for ($i=1;$i<6;$i++) $arr[]=$this->pageNo-3+$i;
foreach ($arr as $val){
if ($val==$this->pageNo) $pageBar.='<li
class="curr"><span>'.$val.'</span></li>'.chr(10);
else $pageBar.='<li><a href="'.$url.$val.'">'.
$val.'</a></li>'.chr(10);
if ($this->pageNo<$this->pageAll){
$pageBar.='<li><a >pageNo+1).'">下页
</a>'.chr(10);
$pageBar.='<li><a >pageAll.'">尾页
</a></li>'.chr(10);
}else{
$pageBar.='<li class="stop"><span>下页</span></li>'.chr
(10);
$pageBar.='<li class="stop"><span>尾页</span></li>'.chr
(10);
$pageBar.='<li class="stop"><span>';
$pageBar.="页次:{$this->pageNo}/{$this->pageAll} {$this-
>pageSize}条/页 总记录:{$this->rsAll} 转到:";
$pageBar.="<input id=\"page\" value=\"{$this->pageNo}\"
type=\"text\" onblur=\"goPage('{$url}',{$this->pageAll});\" />";
$pageBar.='</span></li></ul>'.chr(10);
echo $pageBar;
// 获得客户端真实的IP地址
public function getip(){
if ($_SERVER['HTTP_X_FORWARDED_FOR']) return $_SERVER
['HTTP_X_FORWARDED_FOR'];
elseif ($_SERVER['HTTP_CLIENT_IP']) return $_SERVER
['HTTP_CLIENT_IP'];
elseif ($_SERVER['REMOTE_ADDR']) return $_SERVER['REMOTE_ADDR'];
elseif (getenv('HTTP_X_FORWARDED_FOR')) return getenv
('HTTP_X_FORWARDED_FOR');
elseif (getenv('HTTP_CLIENT_IP')) return getenv
('HTTP_CLIENT_IP');
elseif (getenv('REMOTE_ADDR')) return getenv('REMOTE_ADDR');
else return '';
/******************************************************************
--
函数
名:show_error($message,$sql)
-- 作 用:输出显示错误信息
-- 参 数:$msg 错误信息(必填)
$sql 显示错误的SQL语句,在SQL语句错误时使用(选填)
-- 返回值:字符串
-- 实 例:无
*******************************************************************/
public function show_error($msg='',$sql=false){
$err='['.
mysql
_errno().']'.
mysql
_error();
if ($sql) $sql='SQL语句:'.$this->sql;
if ($this->errLog){
$dirs='error/'; //设置错误日志保存目录
$fileName=date('Y-m-d').'.log';
$filePath=$dirs.$fileName;
if (!is_dir($dirs)){
$dirs=explode('/',$dirs);
$temp='';
foreach($dirs as $dir){
$temp.=$dir.'/';
if (!is_dir($temp)){
mkdir($temp,0777) or die('__无法建立目录'.
$temp.',自动取消记录错误信息');
$filePath=$temp.$fileName;
$text="错误事件:".$msg."\r\n错误原因:".$err."\r\n".($sql?
$sql."\r\n":'')."客户端IP:".$this->getip()."\r\n记录
时间
:".date('Y-m-d
H:i:s')."\r\n\r\n";
$log='错误日志:__'.(error_log($text,3,$filePath)?'此错误信
息已被自动记录到日志'.$fileName:'写入错误信息到日志失败');
if ($this->showErr){
echo '
<fieldset class="errlog">
<legend>错误信息提示</legend>
<label class="tip">错误事件:'.$err.'</label>
<label class="msg">错误原因:'.$msg.'</label>
<label class="sql">'.$sql.'</label>
<label class="log">'.$log.'</label>
</fieldset>';
exit();
/******************************************************************
--
函数
名:drop($table)
-- 作 用:删除表(请慎用,无法恢复)
-- 参 数:$table 要删除的表名,默认为所有(选填)
-- 返回值:无
-- 实 例:$DB->drop('mydb')
*******************************************************************/
public function drop($table){
if ($table){
$this->query("DROP TABLE IF EXISTS `{$table}`");
}else{
$rst=$this->query('SHOW TABLES');
while ($row=$this->fetch_array()){
$this->query("DROP TABLE IF EXISTS `{$row[0]}`");
/******************************************************************
--
函数
名:makeSql($table)
-- 作 用:从数据表读取信息并生成SQL语句
-- 参 数:$table 待读取的表名(必填)
-- 返回值:字符串
-- 实 例:无
*******************************************************************/
public function makeSql($table){
$result=$this->query("SHOW CREATE TABLE `{$table}`");
$row=$this->fetch_row($result);
$sqlStr='';
if ($row){
$sqlStr.="--
---------------------------------------------------------------\r\n";
$sqlStr.="-- Table structure for `{$table}`\r\n";
$sqlStr.="--
---------------------------------------------------------------\r\n";
$sqlStr.="DROP TABLE IF EXISTS `{$table}`;\r\n{$row[1]};\r
$this->Get($table);
$fields=$this->num_fields();
if ($this->num_rows()>0){
$sqlStr.="\r\n";
$sqlStr.="--
---------------------------------------------------------------\r\n";
$sqlStr.="-- Records of `{$table}`\r\n";
$sqlStr.="--
---------------------------------------------------------------\r\n";
while ($row=$this->fetch_row()){
$comma='';
$sqlStr.="INSERT INTO `{$table}` VALUES (";
for($i=0;$i<$fields;$i++){
$sqlStr.=$comma."'".
mysql
_escape_string($row
[$i])."'";
$comma=',';
$sqlStr.=");\r\n";
$sqlStr.="\r\n";
return $sqlStr;
/******************************************************************
--
函数
名:readSql($filePath)
-- 作 用:读取SQL文件并过滤注释
-- 参 数:$filePath SQL文件路径(必填)
-- 返回值:字符串/布尔/数组
-- 实 例:无
*******************************************************************/
public function readSql($filePath){
if (!file_exists($filePath)) return false;
$sql=file_get_contents($filePath);
if (empty($sql)) return '';
$sql=preg_replace('/(\/\*(.*)\*\/)/s','',$sql); //过滤批量注释
$sql=preg_replace('/(--.*)|[\f\n\r\t\v]*/','',$sql); //过滤单行
注释与回车换行符
$sql=preg_replace('/ {2,}/',' ',$sql); //将
两个
以上的连续空格替
换为一个,可以省略这一步
$arr=explode(';',$sql);
$sql=array();
foreach ($arr as $str){
$str=trim($str);
if (!empty($str)) $sql[]=$str;
return $sql;
/******************************************************************
--
函数
名:saveSql($sqlPath,$table)
-- 作 用:将当前数据库信息保存为SQL文件
-- 参 数:$sqlPath SQL文件保存路径,如果为空则自动以当前
日期
为文件
名并保存到当前目录(选填)
$table 待保存的表名,为空着表示保存所有信息(选填)
-- 返回值:字符串
-- 实 例:$DB->saveSql('../mydb.sql');
*******************************************************************/
public function saveSql($sqlPath='',$table=''){
if (empty($table)){
$result=$this->query('SHOW TABLES');
while ($arr=$this->fetch_row($result)){
$str=$this->makeSql($arr[0]);
if (!empty($str)) $sql.=$str;
$text="/***************************************************************
\\r\\n";
$text.="-- Database: $this->data\r\n";
$text.="-- Date Created: ".date('Y-m-d H:i:s')."\r\n";
$text.="***************************************************************/
\r\n\r\n";
}else{
$text='';
$sql=$this->makeSql($table);
if (empty($sql)) return false;
$text.=$sql;
$dir=dirname($sqlPath);
$file=basename($sqlPath);
if (empty($file)) $file=date('YmdHis').'.sql';
$sqlPath=$dir.'/'.$file;
if (!empty($dir)&&!is_dir($dir)){
$path=explode('/',$dir);
$temp='';
foreach ($path as $dir){
$temp.=$dir.'/';
if (!is_dir($temp)){
if (!mkdir($temp,0777)) return false;
$sqlPath=$temp.$file;
$link=fopen($sqlPath,'w+');
if (!is_writable($sqlPath)) return false;
return fwrite($link,$text);
fclose($link);
/******************************************************************
--
函数
名:loadSql($filePath)
-- 作 用:从SQL文件导入信息到数据库
-- 参 数:$filePath SQL文件路径(必填)
-- 返回值:字符串
-- 实 例:无
*******************************************************************/
public function loadSql($filePath){
$val=$this->readSql($filePath);
if ($val==false) $this->show_error($filePath.'不存在');
elseif (empty($val)) $this->show_error($filePath.'中无有效数
else{
$errList='';
foreach ($val as $sql){
$result=
mysql
_query($sql);
if (!$result) $errList.='执行语句'.$sql.'失败<br />';
return $errList;
return false;
// 释放结果集
public function free(){
mysql
_free_result($this->result);}
// 关闭数据库
public function close(){
mysql
_close($this->conn);}
// 析构
函数
,自动关闭数据库,垃圾回收机制
public function __destruct(){
$this->free();
$this->close();
select addtime(now(),1); -- 加1秒
2. adddate()
有两种用法,第二个参数直接填数字的话是为
日期
加上指定天数,填interval的话是为
日期
加上指定的interval
时间
select adddate(now(),1); -- 加1天
select adddate(now(), interval 1 day); -- 加1天
select adddate(now(), interval 1 hour); --加1小时
select adddate(now(), interval 1 minute);
select now()-- 获取当前具体的
日期
和
时间
2019-11-13 16:38:20
select curdate()-- 获取当前
日期
2019-11-13
select curtime()-- 获取当前
时间
6:38:20
1.1、
MySQL
加减
某个
时间
间隔
设置当前...
mysql
时间
运算一.
时间
相减
发现与结果差距很大二.原因三.正确的运算
一.
时间
相减
发现与结果差距很大
mysql
> select t1,t2,t2-t1 from mytest;
+---------------------+---------------------+-------+
| t1 | t2 | t2-t1 |
+---------------------+---------------------+-------+
select (UNIX_TIMESTAMP('2022-04-11 23:56:37') - UNIX_TIMESTAMP('2022-04-11 22:56:00'))/60 dif_minute from dual 60.6167分
select (UNIX_TIMESTAMP('2022-04-12') - UNIX_TIMESTAMP('2022-04-11')) dif_minute from dual 86400秒=24个小时
select TIMESTAMPDIFF(day,'2022-
SELECT TIMESTAMPDIFF(MINUTE,NOW(),flowExpireDate)AS minsRemaining FROM FlowDealOrders WHERE SN='172150210001156' AND orderStatus='使用中' AND sysStatus=1
from datetime import datetime
# review_date 转为
时间
戳形式
def time2stamp(cmnttime): #转
时间
戳
函数
cmnttime=datetime.strptime(cmnttime,'%Y-%m-%d %H:%M:%S')
stamp=int(datetime.timestamp(cmnttime))
return stamp
df_drop_m['review_date'].apply(lambda x: time2
var time = 1595058723;
var unixTimestamp = new Date(time * 1000)
commonTime = unixTimestamp.toLocaleString(‘en-GB’, { hour12: false })
var tim = commonTime.split(’/’)
var year = tim[2].split(’,’)[0]
var month = tim[1]
var day = tim[0]
var tt = tim[2].
一、
mysql
时间
戳转换select unix_timestamp(); 获取当前
时间
的
时间
戳SELECT FROM_UNIXTIME(1529999834);
时间
戳转换为北京
时间
要得到正确的
时间
相减
秒值,有以下3种方法:1、time_to_sec(timediff(t2, t1)),2、timestampdiff(second, t1, t2),3、unix_timestamp(t2) -u...