У меня есть дата в формате java.sql.Date, и я хочу их сравнить
import java.sql.Date
import org.apache.spark.sql.types.{DateType, IntegerType}
var a = Date.valueOf("2018-11-09")
var b = Date.valueOf("2019-11-09")
a: java.sql.Date = 2018-11-09
b: java.sql.Date = 2019-11-09
Если я сравниваю со знаком равенства, это работает
a == b
res1: Boolean = false
Но если я хочу узнать, какой из них больше другого, он вернет ошибку:
a >= b
<console>:37: error: value > is not a member of java.sql.Date
Я ожидал, что он вернет false.
Как я могу сравнить а и б?





Вы можете использовать java.sql.Date#compareTo:
var a = Date.valueOf("2018-11-09")
var b = Date.valueOf("2019-11-09")
if (b.compareTo(a) > 0) {
println("Date b is later than date a.");
}
Если вы хотите использовать операторы сравнения, такие как a >= b вместо compareTo, вы можете: просто добавить
import scala.math.Ordering.Implicits._
для типов Comparable. java.sql.Date на самом деле немного необычен, потому что это Comparable с java.util.Date, а не java.sql.Date. Итак, для этого типа вам нужно ввести описание:
(a: java.util.Date) >= b
Привет, Алексей Романов, спасибо за ответ, но со мной он не работает ..... Я делаю импорт "import scala.math.Ordering.Implicits._", но когда я попробовал a> = b, я все равно получил то же самое ошибка...
@Anneso Отредактировал.
ОК, отредактировал (свой ответ я начал писать до того, как появился ваш).