我正在尝试提交DB:raw()
查询,以测试MySQL CAST()
函数。
我的Model
包含:
class User extend Model
{
public static function myMethodDate()
{
$var = DB::select(
DB::raw("SELECT CAST('2017-05-24 13:38:35.471001' AS DATETIME(3)) AS arrival_time")
);
dd($var[0]->arrival_time);
}
}
当我调用myMethodDate()
方法时,它返回:
"2017-05-24 13:38:35"
但如果我在MySQL shell上运行它:
mysql>
mysql> SELECT CAST('2017-05-24 13:38:35.471001' AS DATETIME(3)) AS arrival_time;
+-------------------------+
| arrival_time |
+-------------------------+
| 2017-05-24 13:38:35.471 |
+-------------------------+
1 row in set (0.00 sec)
mysql>
以“毫秒”为单位。
为什么Laravel DB:raw()
查询不报告MySQL CAST()
输出?
谢谢。
答案 0 :(得分:1)
这不是DB:raw()
方法,而是php
处理DateTime
的方式。如果您在format()
上致电DateTime
,您应该可以获得微秒:
dd($var[0]->arrival_time->format('Y-m-d H:i:s.u'));
答案 1 :(得分:0)
好的,我找到了解决方案来检索“原样”MySQL CAST()
输出:
class User extend Model
{
public static function myMethodDate()
{
$var = DB::select(
DB::raw("SELECT CONVERT( CAST('2017-05-24 13:38:35.471001' AS DATETIME(3)), CHAR) AS arrival_time" )
);
dd($var[0]->arrival_time);
}
}
现在正确的是"2017-05-24 13:38:35.471"