Voici la requête qui est en cours d'exécution sur SQL Server 2008:requête d'accès pour les tables dans liés SQL Server DB pas de données de retour pour la recherche des valeurs datetime fois
SELECT "dbo"."tblMainData"."recID"
FROM "dbo"."tblMainData"
WHERE ("timeInMain" BETWEEN {t '08:00:00'} AND {t '17:00:00'})
Cette requête est générée par un Microsoft Access 2007 base de données qui a lié des tables dans la base de données SQL Server 2008.
Voici la requête d'accès qui génère la requête ci-dessus:
SELECT tblMainData.timeInMain
FROM tblMainData
WHERE (((tblMainData.timeInMain) Between #12/30/1899 8:0:0# And #12/30/1899 17:0:0#));
Quoi qu'il en soit, je sais qu'il ya des données qui répond à ce critère. Pourquoi ne vois-je pas les résultats attendus?
C'est la première fois que j'ai vu la syntaxe {t '08:00:00'}
, que je suppose supposée ignorer la partie date du champ datetime. Je n'ai trouvé aucune documentation à ce sujet.
Merci pour toute aide.
MISE À JOUR
juste couru select {t '08:00:00'}
dans SSMS, qui est revenu 2010-11-17 08:00:00.000
. Cela explique pourquoi je ne récupère pas de données. Mais, comme vous pouvez le voir, la requête Access est explicite sur la date à utiliser et le TSQL généré ne l'inclut pas. Que faire?
MISE À JOUR 2
J'ai fait quelques expériences. L'accès supprime uniquement la date de TSQL généré lorsqu'il est 12/30/1899. Apparemment, il s'agit d'une date spéciale que l'accès utilise lorsqu'un utilisateur stocke uniquement une heure dans un champ DateTime et Access suppose que s'il est inclus dans une requête, il n'est pas vraiment important. Sensationnel.
Alors, je crois que mes options sont:
- Appel des procédures stockées à partir d'Access. Je ne suis pas sûr de savoir comment le faire pour le moment.
- Mettez à jour les données dans la base de données du serveur SQL avec une date qui ne sera pas supprimée lors de la génération de TSQL. Essayez de trouver un moyen de faire en sorte que les TSQL générés incluent la date explicite du 30/12/1899. IDEAL
Autres idées?
Les accolades sont une séquence d'échappement ODBC pour le moment. Voir: [Séquences d'échappement de date, d'heure et d'horodatage] (http://msdn.microsoft.com/fr-fr/library/ms712360.aspx) –
Est-il possible d'émettre des requêtes TSQL directement ou est-ce toujours le cas? accéder à l'étape de traduction? – Donnie
@Donnie - Je ne sais pas. Je n'utilise presque jamais Access. J'essaie de résoudre ce problème pour un ami. –