一个MySQL表的雇员有int类型的列(beginyear,beginmonth,beginday,empid)。
返回所有等于或大于2009/8/13日期的行的正确查询是什么?那是年,月,日。
这样的查询是不正确的,因为它不会返回包含日期的行,例如2009/9/1(在下面的where子句中按beginday>=13筛选)或2010/1/14。

SELECT *
FROM EMPLOYEE
where beginyear >= 2009
  and beginmonth >= 8
  and beginday >=13

假设我不能对模式进行任何更改,并且必须从JDBC创建某种查询才能得到结果。

最佳答案

我能做的就是处理你在三个不同领域的糟糕处境:

select *, concat(beginyear, '-',beginmonth,'-',beingday) as full_date
  FROM TABLE
   WHERE CONCAT(beginyear, '-',beginmonth,'-',beingday) >= '2009-08-13'

MySql对datetime表达式的概念有点奇怪,您可能希望用date()函数包装concat以规范化它。

10-05 19:44