gdoo/app/sql.php

161 lines
3.6 KiB
PHP

<?php
/**
* 把时间戳转换成时间
*/
function sql_timestamp_datetime($value) {
$db_type = env('DB_CONNECTION');
if ($db_type == 'sqlsrv') {
$value = "DATEADD(ss, {$value}, '1970-01-01 08:00:00')";
} elseif ($db_type == 'mysql') {
$value = "from_unixtime({$value})";
}
return $value;
}
/**
* 获取sql年
*/
function sql_year($value, $type = 'date') {
$db_type = env('DB_CONNECTION');
$sql = null;
if ($type == 'ts') {
$value = sql_timestamp_datetime($value);
}
if ($db_type == 'sqlsrv') {
$sql = "year({$value})";
} else if($db_type == 'mysql') {
$sql = "year({$value})";
}
return $sql;
}
/**
* 获取sql月
*/
function sql_month($value, $type = 'date') {
$db_type = env('DB_CONNECTION');
$sql = null;
if ($type == 'ts') {
$value = sql_timestamp_datetime($value);
}
if($db_type == 'sqlsrv') {
$sql = "month({$value})";
} else if($db_type == 'mysql') {
$sql = "month({$value})";
}
return $sql;
}
/**
* (时间戳,时间)字段转换为年月
*/
function sql_year_month($value, $type = 'date') {
$db_type = env('DB_CONNECTION');
$sql = null;
if ($type == 'ts') {
$value = sql_timestamp_datetime($value);
}
if($db_type == 'sqlsrv') {
$sql = "CONVERT(varchar(7), {$value}, 120)";
} else if($db_type == 'mysql') {
$sql = "DATE_FORMAT({$value}, '%Y-%m')";
}
return $sql;
}
/**
* (时间戳,时间)字段转换为年周
*/
function sql_year_week($value, $type = 'date') {
$db_type = env('DB_CONNECTION');
$sql = null;
if ($type == 'ts') {
$value = sql_timestamp_datetime($value);
}
if ($db_type == 'sqlsrv') {
$sql = "DATEPART(week, {$value})";
} else if($db_type == 'mysql') {
$sql = "WEEK({$value}, 1)";
}
return $sql;
}
/**
* (时间戳,时间)字段转换为年月日
*/
function sql_year_month_day($value, $type = 'date') {
$db_type = env('DB_CONNECTION');
$sql = null;
if ($type == 'ts') {
$value = sql_timestamp_datetime($value);
}
if ($db_type == 'sqlsrv') {
$sql = "CONVERT(varchar(10), {$value}, 120)";
} else if($db_type == 'mysql') {
$sql = "DATE_FORMAT({$value}, '%Y-%m-%d')";
}
return $sql;
}
/**
* (时间戳, 时间)字段转换为月日
*/
function sql_month_day($value, $type = 'date') {
$db_type = env('DB_CONNECTION');
$sql = null;
if ($type == 'ts') {
$value = sql_timestamp_datetime($value);
}
if($db_type == 'sqlsrv') {
$sql = "substring(convert(varchar(10), {$value}, 120), 6, 10)";
} else if($db_type == 'mysql') {
$sql = "DATE_FORMAT({$value}, '%m-%d')";
}
return $sql;
}
/**
* 浮点类型转换成字符串(主要正对sqlserver)
*/
function sql_float_varchar($value, $length = 255) {
$db_type = env('DB_CONNECTION');
$sql = null;
if($db_type == 'sqlsrv') {
$sql = "CONVERT(VARCHAR({$length}), {$value})";
} else if($db_type == 'mysql') {
$sql = $value;
}
return $sql;
}
/**
* 实现不同的日期对比
*/
function sql_is_date($value) {
$db_type = env('DB_CONNECTION');
$sql = null;
if ($db_type == 'sqlsrv') {
$sql = $value;
} else if($db_type == 'mysql') {
$sql = $value;
}
return $sql;
}
/**
* 实现不同的天差
*/
function sql_day_diff($field, $value) {
$db_type = env('DB_CONNECTION');
$sql = null;
if($db_type == 'sqlsrv') {
$sql = "datediff(day, $field, '$value')";
} else if($db_type == 'mysql') {
$sql = "datediff($field, '$value')";
}
return $sql;
}