【问题标题】:How to get the Time in HH:MM AM PM format IN eloquent from SQL Server如何从 SQL Server 中以雄辩的 HH:MM AM PM 格式获取时间
【发布时间】:2018-08-16 20:38:55
【问题描述】:

在 SQL Server 中有一个日期时间字段。不关心日期和关心时间部分。而插入它是上午 9 点 30 分,晚上 11 点 30 分。当我检索回来时,我使用 eloquent ORM find 方法返回为

1900-01-01 09:30:00.000

我只想从 eloquent 方法中检索相同格式的数据,例如上午 9 点 30 分

P.S : SQL Query 提供了正确的格式(但我需要以 Eloquent 的方式)

SELECT REPLACE(REPLACE(RIGHT('0'+LTRIM(RIGHT(CONVERT(varchar,endTime,100),7)),7),'AM',' AM'),'PM',' PM')
FROM servers 
WHERE serverid = 12

结果为上午 9:30

【问题讨论】:

  • 有人能解释一下为什么它得到了负分吗?我相信这是一个有效的问题,因为到目前为止还没有人遇到过。
  • 如果 2012+ 可以使用 Format(endTime,'h:mm tt') 如果需要 09:30 使用 hh
  • 你不应该在select 查询中这样做,这应该在表示层中完成。另外,如果您不关心日期,为什么要将其存储在datetime 中?使用不同的数据类型来避免这个问题。
  • 谢谢坦纳。它将在表示层中完成。只是对学习 Eloquent ORM 的好奇在这里问。

标签: sql sql-server laravel eloquent


【解决方案1】:

您应该在模型中将列定义为日期:

protected $dates = [
    'end_time',
];

这会将属性值“转换”为Carbon 实例,您可以在该实例上格式化日期时间:

$model->end_time->format('g:i A');

【讨论】:

  • 在模型中定义,就在另一个变量的下方。公共 $timestamps = 假;受保护的 $dates = ['end_time', ];当我在控制器中访问相同的内容时,出现一些错误“在 null 上调用成员函数 format()”$server = Servers::find($id); echo $server->end_time->format('g:i A');
  • 您的数据库列/属性是否实际上 end_time?因为我只是将其用作示例/占位符。
  • 列名是endTime
  • 然后用它代替end_time。虽然如果你想使用 Eloquent,最好坚持使用 Laravel 约定 (snake_case) 作为表名和列名。
猜你喜欢
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 2013-09-09
相关资源
最近更新 更多