首页 > 解决方案 > SQL:日期类型数据返回日期时间值

问题描述

我有一个带有 ote_date (DATE) 的加班表和带有 emp_start_date (DATE) 的员工表。然而 ote 正在像 01-01-01 00:00:00 而不是普通的 01-01-01 一样返回。

我有以下使用 laravel 的学说查询。

return Overtime::select('overtimes.*','overtimes.id as ote_id','first_name','last_name','middle_name','stat.name as stat_name','clt_name','cte_name', 'overtimes.ote_date as test')
    ->leftjoin('users','users.id','=','ote_user_id')
    ->leftjoin('employees','employees.emp_user_id','=','ote_user_id')
    ->leftjoin('clients','clt_id','=','emp_client_id')
    ->leftjoin('client_teams','cte_id','=','emp_client_team_id')
    ->leftjoin('options as stat','stat.id','=','ote_status_id')
    ->where('emp_isactive','=',1)
    ->where('emp_rehire','=',0)
    ->where('ote_date', '>=', 'emp_start_date');

查询的示例输出:

{"id":22808,"ote_user_id":1294,"ote_reason":"Holiday Premium","ote_date":"2019-08-12 00:00:00","ote_start_time":"21:00:00","ote_end_time":"06:00:00","ote_total_hours":"8.00","ote_status_id":123,"ote_whole_day":1,"created_at":"2019-08-15 12:58:54","created_by":1294,"updated_at":"2019-08-24 03:10:05","modified_by":1669,"deleted_at":null,"ote_id":22808,"first_name":"Dummy","last_name":"Dummy","middle_name":"Autor","stat_name":"Approved","clt_name":"Dummy","cte_name":"Sales Development Representative (SDR)","emp_start_date":"2019-08-12"}

正如您在我的数据中看到的:

"ote_date":"2019-08-12 00:00:00"
"emp_start_date":"2019-08-12"

它们都是 DATE 类型,那么另一个为什么会返回 DATETIME?

标签: sqllaravel

解决方案


我的第一反应是认为 ote_date必须以某种方式定义为时间戳列!?

(顺便说一句,一个小点和无关的点,但我注意到您的查询与您的示例输出不太匹配 - 查询中的最后一列是“overtimes.ote_date as test”,而输出中的最后一列是“ emp_start_date")。

我猜你有一个目录查询确认/证明 ote_date 被定义为日期?

我之前在任何 SQL 环境中都没有遇到过您描述的行为。


推荐阅读