试图尽可能地总结标题,但可能不那么清楚。
在这里。
我有一个查询,外部联接返回一个日期列。所以,我将在结果行中有“空日期”。为此,我使用ifnull()将空虚改为“ - ”。
问题是无法使用类似{{order.LastDateOrder | date : "dd-MMMM-yyyy HH:mm:ss"}}
的前端处理列。当列包含数据时,它会以“2017-06-05 07:27:50
”的格式显示,而实际上我想要的是显示'05 June 2017 07:27:50'
。 null
值应显示为" - "
。
有什么方法可以实现我的目标?
(我正在使用MySQL和Angular)
谢谢,
答案 0 :(得分:1)
我建议完全处理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中执行此操作,我们可以使用NULL
轻松处理COALESCE
值。
答案 1 :(得分:0)
我已将自定义过滤器名称创建为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();
}
})