如果日期列和字符串在 null 时"-"返回日期,并且仍然作为日期而不是字符串传递到前面



试图在标题中尽可能多地总结,但可能不是那么清楚。

在这里。

我有一个查询,其外部联接返回了一个日期列。因此,我将在结果行中显示"空日期"。为此,我使用 ifnull(( 处理以将该空性更改为" - "。

问题是列不能在前端使用 like{{order.LastDateOrder | date : "dd-MMMM-yyyy HH:mm:ss"}}进行处理。当列包含数据时,它以"2017-06-05 07:27:50"之类的格式显示,而实际上我想要的是像'05 June 2017 07:27:50'一样显示它。null值应显示为" - "

实现我想要的替代方案是什么?

(我正在使用MySQL和Angular(

谢谢

我建议完全处理MySQL方面的格式化。 请考虑以下查询:

SELECT
t1.id,
COALESCE(DATE_FORMAT(t2.col, '%d-%m-%Y %H:%i:%s'), '-') AS date_label
FROM table1 t1
LEFT JOIN table2 t2
ON t1.id = t2.t1_id

然后,在 Angular 一侧,只需显示一个基本字符串,无需特殊格式。

我的方法要点是我们将日期列转换为您想要的字符串格式,但如果NULL,我们只需用破折号替换即可。 我们在MySQL中执行此操作,我们可以在其中使用COALESCE轻松处理NULL值。

我已经创建了自定义过滤器名称作为formatDate,在您看来,您可以将其用作{{order.LastDateOrder | formatDate}}。希望对您有所帮助。

angular.module('test').filter('formatDate', function () {
return function (date) {
var mydate = new Date(date);
var month=["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
return mydate.getDate() +  month[mydate.getMonth()] +  mydate.getFullYear() + mydate.getHours()+ mydate.getMinutes()+ mydate.getSeconds();
}
})