                 self = order
             }
         }
-    }
-    
+        
+        public init(format: Format, order: Order) {
+            self.format = format
+            self.order = order
+        }
+        
+        public init?(rawValue: String) {
+            let parts = rawValue.components(separatedBy: ", ")
+            precondition(parts.count == 2, "DateStyle string should have two parts")
+            
+            guard let format = Format(rawValue: parts[0]), let order = Order(rawValue: parts[1]) else {
+                return nil
+            }
+            
+            self.init(format: format, order: order)
+        }
+        
+        public var rawValue: String {
+            return "\(format.rawValue), \(order.rawValue)"
+        }
+    }
+    
+    /// Text encodings supported in some fashion by PostgreSQL.
     public enum Encoding: String {
         static let unknownSQLASCIIName = "SQL_ASCII"
         

        }
    }
    
    /// - RecommendedOver: `PQescapeLiteral`
    public func quotedLiteral(_ string: String?) -> String {
        guard let string = string else {

        }
    }
    
    /// The format of INTERVAL columns when rendered as text.
    /// 
    /// This property is read-only because this library requires that the 
    /// date style always be set to `IntervalStyle.iso8601`. 
    /// If it is set to anything else, this library may not be able to correctly 
    /// interpret interval values returned by queries. Never use any  
    /// mechanism to set the `IntervalStyle` configuration variable to 
    /// anything but `iso_8601`.
    public internal(set) var intervalStyle: IntervalStyle {
        get {
            let rawValue = value(for: "IntervalStyle")!
