我想寫一個SQL Server查詢,它應該得到兩個日期之間的差異(即日期可用於名爲「開始日期」和「結束日期」)。我希望找到這兩個不同列中兩個日期之間的差異,並在另一列中更新爲「已過期」(如果差異爲-1或更低)。最重要的是:時間應該從指定的開始日期開始,並且應該定期檢查。SQL Server查詢獲取兩個不同列中的兩個日期之間的差異
0
A
回答
0
您可以使用DATEDIFF和case when
這樣的:
update table set expColumn = case when DATEDIFF(day,start_date,end_date) > 0
then 'Expired' end FROM table
希望這有助於。
0
要使用DATEDIFF()函數查找兩個日期值之間的差值。
此外,根據您的要求,您可以在表中將其設置爲計算列。這樣,計算列定義中的組件列的任何更改都會自動更新計算列以反映新值。
使用PERSISTED關鍵字,您還可以讓計算列被索引。 請查看此處的文檔以瞭解更多詳細信息:https://technet.microsoft.com/en-us/library/ms191250%28v=sql.105%29.aspx
0
這是基於我認爲您正在嘗試做的事情,但並不完全清楚。
我不認爲你想添加一列到你的表來確定什麼是過期的,因爲該列將依賴於「結束日期」列以及違反第三範式的主鍵。它確實不需要,因爲您可以隨時查詢哪些過期。我無法真正想到一個場景,您需要有一個表明過期的列。您可以像創建其他人一樣創建一個查詢來顯示(而不是創建)另一個標記過期行的列,或者只顯示過期的行,或者將它們移動到不同的表中可能更有意義。
SET IDENTITY_INSERT ExpiredTableName ON
INSERT INTO ExpiredTableName (Column1, Column2, StartDate, EndDate)
SELECT *
FROM TableName
WHERE DATEDIFF(day, InvoiceDate, '2015-04-20') >0
身份插入僅適用於自動生成的密鑰。
您可以像上面提到的那樣定期運行查詢。
相關問題
- 1. 兩個日期之間的SQL查詢日期差異
- 2. 從2個REF'd列獲取兩個日期之間的差異
- 3. SQL - 兩個查詢之間的差異
- 4. sql server中兩個日期之間的月份差異
- 5. SQL查詢獲取不同日期之間的差異select statt
- 6. 兩個日期之間的差異
- 7. 在兩個日期之間獲取日期差異
- 8. 在兩個日期之間的差異
- 9. 獲取兩個日期列之間的差異分鐘
- 10. 兩個表之間的日期差異
- 11. SQL Server 2005簡單查詢獲取兩個日期之間的所有日期
- 12. Grails - 兩個日期之間的差異
- 13. VB - 兩個日期之間的差異
- 14. 兩個日期之間的差異
- 15. Javascript - 兩個日期之間的差異
- 16. 兩個日期之間的差異python
- 17. 兩個日期之間的Ruby差異
- 18. 兩個日期()之間的JavaScript差異
- 19. 兩個日期之間的oracle差異
- 20. 兩個日期之間的差異
- 21. 兩個日期之間的差異Yii2
- 22. 兩個Java日期之間的差異?
- 23. 兩個日期之間的Android差異?
- 24. Java:兩個日期之間的差異
- 25. 如何獲取兩個日期時間值之間的差異?
- 26. 獲取年份中兩個日期之間的差異
- 27. 獲取的時間差不包括在SQL Server週五兩個日期之間
- 28. 兩個查詢之間的SQL Server差異
- 29. Oracle - 查詢兩個日期之間的差異
- 30. sql查詢獲取兩個日期之間的數據
有效期限聽起來像是與當前時間有關而不是開始時間。你確定你的要求沒問題嗎?此外,我不會添加任何更新的邏輯,您可以將它添加到您正在使用的select子句中。 –
好吧,您尚未發佈您嘗試過的內容。從[DATEDIFF]開始(https://msdn.microsoft.com/en-us/library/ms189794(v = sql.105).aspx)。 – Andrew
「你應該定期檢查」是什麼意思?例如,您是否想要使用此更新查詢作爲工作本身運行計劃作業? –