2017-10-18 1 views
-1

disons que j'ai datfield1 et datefield2, habituellement, datefield2 a 3 mois d'avance sur datafield1. cependant, il y a un cas c'est plus de 3 mois donc j'ai besoin de remonter seulement la date différente est plus de trois mois.trouver une période spécifique par deux champs de date

Exemple:

id | Datefield1 | Datefield2 
1 08/15/2017 11/15/2017 
2 05/10/2017 10/11/2017 
3 06/01/2018 09/01/2017 

le résultat doit tirer seulement id 2. Merci d'avance.

+0

Regardez DATEDIFF https://docs.microsoft.com/en-us/sql/t-sql/functions/datediff-transact-sql – Leonidas199x

+1

En demandant * "Comment faire ceci?" * Devrait être accompagné de votre propres tentatives personnelles pour le résoudre, ou au moins, un peu de recherche. En l'état, cette question est beaucoup trop large et apparaît comme une demande pour quelqu'un d'écrire votre code pour vous. – Santi

Répondre

3
WHERE DATEDIFF(MM,Datefield1,Datefield2) > 3 

Peut être utilisé pour trouver où la différence de mois est plus que 3.

+0

Merci. mon autre souci est comment mettre à jour Datefiled2 = 3 si c'est plus de 3. – Messi

+0

Que voulez-vous dire? Le mettre à jour pour qu'il ait l'entier 3 dedans? Ou changer le mois à 3 mois de Datefield1? – Leonidas199x

+0

non que la date est différente de trois mois. examen datefield1 01/01/2017 datefield2 devrait être 3/1/2017. – Messi

1

Vous pouvez utiliser datediff pour solveur il:

select id 
from t1 
where DATEDIFF(month,Datefield1,Datefield2)>3 
0

Utilisation DateDiff:

SELECT * 
from table1 
WHERE DATEDIFF(MONTH, datefield1, datefield2) > 3 

demo

Cela vous donnera ID2:

| id |   Datefield1 |   Datefield2 | 
|----|----------------------|----------------------| 
| 2 | 2017-05-10T00:00:00Z | 2017-10-11T00:00:00Z | 

Si vous souhaitez mettre à jour, utilisez DATEADD:

UPDATE t1 
SET datefield2 = DateADD(MONTH, 3, datefield2) 
FROM table1 AS t1 
WHERE DATEDIFF(MONTH, datefield1, datefield2) > 3; 
+0

Mon autre question est de savoir comment mettre à jour Datefiled2 = 3 si son plus de 3. – Messi

+0

@Messi 'Datefiled2' est de type de données datetime, vous ne pouvez pas mettre à jour avec entier? –

+0

Je suis désolé je voulais dire 3 mois différents. – Messi

1

J'ai pas essayer sur SQL, mais je pense que vous pouvez essayer avec quelque chose comme:

SELECT id FROM table 
WHERE DATEDIFF(month,Datefield1,Datefield) > 3 

Cordialement.