返回日期如果日期列和字符串“ - ”为空,并仍然作为日期传递给前面,而不是字符串

时间:2017-08-24 04:26:06

标签: mysql angularjs

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

在这里。

我有一个查询,外部联接返回一个日期列。所以,我将在结果行中有“空日期”。为此,我使用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)

谢谢,

2 个答案:

答案 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();

    }
})