     {year, month, day, hour, minute, second, microsecond}
   end
 
-  defp do_compare(first, first), do: :eq
   defp do_compare(first, second) when first > second, do: :gt
   defp do_compare(first, second) when first < second, do: :lt
+  defp do_compare(_, _), do: :eq
 
   defimpl String.Chars do
     def to_string(%NaiveDateTime{calendar: calendar} = naive) do


  ## Helpers

  defp do_compare(first, first), do: :eq
  defp do_compare(first, second) when first > second, do: :gt
  defp do_compare(first, second) when first < second, do: :lt

  defimpl String.Chars do
    def to_string(%Date{calendar: calendar} = date) do

    {hour, minute, second, microsecond}
  end

  defp do_compare(first, second) when first > second, do: :gt
  defp do_compare(first, second) when first < second, do: :lt
  defp do_compare(_, _), do: :eq

  defimpl String.Chars do
    def to_string(time) do
