2017-04-05 2 views
1

Mabuhay!Comment ajouter l'année et la fin du mois en requête SQL

Existe-t-il un code court pour mettre à jour la date avec 2 années supplémentaires et la fin du mois?

Exemple: Ouverture du compte: 04/04/2017
expiration: 2019-04-30

UPDATE dbname SET [Expiry] = DateAdd(year,2,[AccountOpened]) 

Sans l'ajout de cette UPDATE dbname SET [Expiry] = DateAdd(mm,1,[AccountOpened]) car il ajoutera un mois au lieu de la date du mois dernier.

Merci

+0

Si vous parlez de SQL Server, il a maintenant une fonction [EOMONTH] (https://docs.microsoft.com/en-us/sql/t-sql/functions/eomonth-transact-sql). Dans votre cas, vous pouvez l'utiliser avec le second paramètre 24: 'EOMONTH (AccountOpened, 24)' – cha

+0

Veuillez marquer votre SGBD. Est-ce MySQL? PostgreSQL? Serveur SQL? ... Vous devez toujours marquer votre SGBD avec des questions SQL pour obtenir des réponses appropriées. –

+0

Merci de le rappeler, oui c'est pour le serveur sql désolé pour la confusion. Noté sur celui-ci. – astroboy

Répondre

1

Si votre UTILISIEZ SQLServer script suivant donnera résultat du désir. Avant d'effectuer l'opération UPDATE, reprendre les données d'origine.

UPDATE dbname 
SET [Expiry] = DATEADD(d,-1,DATEADD(m,DATEDIFF(m,0, (DATEADD(YY,2,AccountOpened))) + 1,0)) 
1

Cela devrait fonctionner pour Sql Server (toute version, je pense)

UPDATE dbName 
SET [Expiry] = DATEADD(MONTH, ((YEAR([AccountOpened]) - 1898) * 12) + MONTH([AccountOpened]), -1) 

I made a fiddle

Pour Sql Server 2012+ vous pouvez simplement:

UPDATE dbName SET [Expiry] = EOMONTH([AccountOpened], 24) 

Pour MySql (que je suppose que vous n'utilisez pas parce que vous utilisez des parenthèses pour vos champs, mais ici il est néanmoins):

UPDATE dbName SET Expiry = LAST_DAY(DATE_ADD(AccountOpened, INTERVAL 2 YEAR))  
0

Vous recherchez cette requête?

Clause Where = CAST ([CustomDate2] AS DATE) entre CAST (GETDATE() AS DATE) et DATEADD (jour, +/- numéro ici, CAST (GETDATE() AS DATE))

SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,"your date")+1,0)) 

LastDay_AnyMonth ResultSet: LastDay_AnyMonth --------

2007-08-31 23: 59: 59.000