2010-02-09 7 views
0

J'ai une requête dans laquelle je dois effectuer à l'aide de trois entités énumérées ci-dessous:accès SQL Query Aide

  1. LU_APPNAME
  2. SDB_AppHistory
  3. SDB_SESSION

LU_APPNAME a champ APPNAM, SDB_AppHistory a le champ STARTTIME qui est date/heure et aussi SDB_Session a champ DURATION.

Je dois exécuter une requête SQL pour afficher les applications Citrix qui n'ont pas été utilisées au cours des 6 derniers mois.

Pour l'instant j'ai le code ci-dessous.

SELECT dbo_LU_APPNAME.APPNAME, dbo_SDB_APPHISTORY.STARTTIME 
FROM dbo_LU_APPNAME INNER JOIN dbo_SDB_APPHISTORY ON dbo_LU_APPNAME.PK_APPNAMEID = dbo_SDB_APPHISTORY.FK_APPNAMEID 
WHERE (((dbo_LU_APPNAME.APPNAME) Like "* Citrix") AND ((dbo_SDB_APPHISTORY.STARTTIME) Between DateAdd("d",-180, Getdate()))) 

Je suis un peu confus que je ne suis pas très bon avec SQL

Quelqu'un peut-il s'il vous plaît des conseils, si vous avez besoin de plus d'informations s'il vous plaît laissez-moi savoir.

Merci, toute aide serait formidable.

Répondre

0

Eh bien, vous êtes absent 1/2 de la clause BETWEEN ...

ET ((dbo_SDB_APPHISTORY.STARTTIME) Entre GetDate() ET DateAdd ("d", - 180, Getdate())

+0

GETDATE() ne semble pas être reconnu dans ACCESS SQL View 2007, NOW() semble bien. Toutes les alternatives – MalsiaPro

+0

La fonction Access/Jet/ACE est Date(). –

+0

Je supposais que l'OP avait la fonction correcte, je soulignais juste qu'il manquait le reste des critères pour BETWEEN .... Ainsi ce serait: AND ((dbo_SDB_APPHISTORY.STARTTIME) Entre Date() ET Date() - 180) – Leslie

0

Vous pouvez utiliser date() au lieu de GetDate:

DateAdd("d",-180, Date()) 

date() est tout à fait satisfait:

Date()-180 

DateAdd acceptera "m", si vous souhaitez prendre en compte des mois:

DateAdd("m",-6, Date()) 

Attention aux formats de date et aux paramètres régionaux.