可以使用像 "strftime" 这样的日期函数吗?

It's possible to use date functions like "strftime"?

我试图创建这样的表达式

let performedDate = Expression<String>("strftime('%Y-%m-%d', performedDate)")

然后使用过滤方法与另一个字符串进行比较。 但是生成的SQL是

"strftime('%Y-%m-%d', performedDate)" = '2017-08-17'

有一种方法可以从 "strftime('%Y-%m-%d', performedDate)" 中删除引号,或者我必须使用原始 SQL 字符串?

我通过在 Expression 类型上创建扩展来解决我的问题

 
extension Expression {

    public func strftime(format: String) -> Expression {
        return Expression("strftime('\(format)', \(template))", bindings)
    }
}
 

然后使用

let date = Expression<String>("startDate")

let dateFormat = date.strftime(format: "%Y-%m-%d")

您也可以使用 dateFormat 作为投影或过滤器方法。