1

我有 2 个 PDO 数据库连接。我正在 MS SQL 表中搜索与日期(mysql 日期时间)行最匹配的行。

我已将 mysql.table1.date 传递给 mssql.table,我正在根据 mssql.table.date 寻找最接近的日期。它也被定义为日期时间字段。我只需要返回 1 行,最接近时间,所以本质上:

 SELECT * FROM table ORDER BY CLOSEST(mysqldate = mssql.table.date) LIMIT 1;

我知道上面的语法不正确,但基本上输出了我需要的东西,但我真的不知道如何用 mssql 来做到这一点。

有什么帮助吗?

4

2 回答 2

1

基本上你可以找到mysql日期与mssql.Table.Date列中所有日期的差异。然后你需要从上面的查询中选择最小的差异值。希望下面的查询可以帮助你

 ;with CTE as 
 (
 Select mssql.table.date,row_number() 
 over (order by    abs(datediff(day,mysqlDate,mssql.table.date))) rowNumber
 from mssql.Table)
 select mssql.table.date from CTE where rowNumber=1
于 2012-06-08T07:11:41.167 回答
1

一个对我有用的简单解决方案是执行以下操作:

 SELECT * FROM `table` WHERE `date` < `startDate` ORDER BY `date` LIMIT 1;

这将返回与我经过的时间最近的时间匹配的 1 行:)

于 2012-06-11T10:51:45.220 回答