【问题标题】:Returning the closest to a date in a table using PDO Mysql/MSSQL使用 PDO Mysql/MSSQL 返回表中最接近日期的日期
【发布时间】:2012-06-12 05:50:15
【问题描述】:

我有 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 做到这一点。

有什么帮助吗?

【问题讨论】:

    标签: mysql sql-server pdo


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 2020-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-01
        相关资源
        最近更新 更多