2017-04-05 52 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)函數。在你的情況下,你可以使用它的第二個參數24:'EOMONTH(AccountOpened,24)' – cha

+0

請標記您的DBMS。它是MySQL嗎? PostgreSQL的? SQL Server? ...您應該始終用SQL問題標記您的DBMS以獲得更好的答案。 –

+0

感謝提醒,是的,它爲sql服務器抱歉混淆。注意到這一點。 – astroboy

回答

1

如果你正在使用SQLSERVER腳本會給出慾望的結果。在執行UPDATE操作之前,取回原始數據。

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

這應該用於SQL Server工作(任何版本,我認爲)

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

I made a fiddle

對於SQL Server 2012+,你可以簡單地說:

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

對於MySQL (我猜你沒有使用,因爲你的領域使用括號,但這裏仍然是):

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

您是否正在尋找該查詢?

where子句= CAST之間CAST([CustomDate2] AS DATE)(GETDATE()AS DATE)和DATEADD(日,+/-號這裏,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