/ / Retour du plus proche d'une date dans une table avec PDO Mysql / MSSQL - mysql, sql-server, pdo

Retourner le plus proche d'une date dans une table en utilisant PDO Mysql / MSSQL - mysql, sql-server, pdo

J'ai 2 connexions de base de données PDO. Je fais une recherche dans une table MS SQL pour une ligne qui correspond le plus à une ligne de date (mysql datetime).

J'ai mysql.table1.date passé à mssql.table et je cherche la date la plus proche en fonction du mssql.table.date. Il est également défini comme un champ datetime. Je n'ai besoin que d'une ligne retournée, la plus proche de l'heure, donc essentiellement:

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

Je sais que la syntaxe ci-dessus est incorrecte, mais que le résultat final est ce dont j'ai besoin, mais je ne sais vraiment pas comment faire cela avec mssql.

De l'aide?

Réponses:

1 pour la réponse № 1

Fondamentalement, vous pouvez trouver la différence du mysqldate avec toutes les dates dans la colonne mssql.Table.Date. Ensuite, vous devez sélectionner la plus petite valeur de différence de la requête ci-dessus. Espérons que la requête ci-dessous pourrait vous aider

 ;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

1 pour la réponse № 2

Une solution simple qui a fonctionné pour moi a été de faire ce qui suit:

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

Cela retourne 1 ligne correspondant au temps le plus proche du temps que je passe :)