相关文章推荐
阳刚的玉米  ·  TiDB Dashboard SQL ...·  2 周前    · 
无邪的硬盘  ·  MSSQLSERVER_7391 - ...·  1 周前    · 
千年单身的猴子  ·  gradle - Failed to ...·  2 年前    · 
英姿勃勃的针织衫  ·  android - No ...·  2 年前    · 
如题:如下三个日期,查询在2008-12-20日之前或者是之后(注意是之前或者之后,反正就是距离它最近日期的一条记录,肯定只有一条)(即2008-12-15)应该怎样写?... 如题:如下三个日期,查询在2008-12-20日之前或者是之后(注意是之前或者之后,反正就是距离它最近日期的一条记录,肯定只有一条)(即2008-12-15)应该怎样写?
1 2008-12-01
2 2008-12-15
3 2008-12-31 不同数据库有不同的写法,不过思路是一样的,就是字段的日期形式减去2008-12-20,然后取绝对值的最小值。找到这个最小值就可以了。
枚举2个数据库的写法
MS SQL SERVER,
select * from table_name
where abs(column_name-convert(datetime,'20081220',112)) in (
select min(abs(column_name-convert(datetime,'20081220',112))) from table_name)

ORACLE
select * from table_name
where abs(column_name-to_date('20081220','yyyymmdd')) in (
select min(abs(column_name-to_date('20081220','yyyymmdd'))) from
table_name
)

注:column_name字段需要时日期类型,如果不是需要做转换