2017-04-05 5 views
1

Mabuhay!SQLクエリで年と月末を追加する方法

さらに2年間と月末に日付を更新するショートコードはありますか?

サンプル: 口座開設:2017年4月4日
有効期限:2019年4月30日

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

このUPDATE dbname SET [Expiry] = DateAdd(mm,1,[AccountOpened]) を追加することなく、代わりにそれは先月の日の1ヶ月追加されますので。

ありがとうございます

+0

SQL Serverについて説明している場合、[EOMONTH](https://docs.microsoft.com/en-us/sql/t-sql/functions/eomonth-transact-sql)機能が追加されました。あなたの場合、2番目のパラメータ24と一緒に使用できます: 'EOMONTH(AccountOpened、24)' – cha

+0

DBMSにタグを付けてください。それはMySQLですか? PostgreSQL? SQLサーバー? ...あなたは常に適切な回答を得るためにSQL質問でDBMSにタグを付けるべきです。 –

+0

思い出してくれてありがとう、ありがとう、そのsqlサーバーの混乱のために残念です。これに注目しました。 – astroboy

答えて

1

次のスクリプトを使用している場合は、望みの結果が得られます。 UPDATE操作を実行する前に、元のデータを取り戻してください。これは、SQL Serverのために働く必要があり

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

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

I made a fiddle

2012+あなたは、単にすることができます(任意のバージョン、私は思う):

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

MySQLの(あなたのフィールドに角括弧を使用しているので、あなたは使用していないと推測していますが、ここにはそれにもかかわらずあります)。

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

このクエリをお探しですか?

(DATE AS GETDATE())

CAST間句= CAST([CustomDate2] DATE AS)とDATEADD(ここでは日、+/-数、CAST(DATE AS GETDATE()))

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

関連する問題