我有兩個變量(即SQL表中的兩列),一個是日期時間格式,例如, 2011-12-31 00:00:00,另一種是整數格式,例如201203,我希望得到這兩個變量之間的差異,最有效的方法是什麼?謝謝。得到SQL服務器中日期/時間和整數值之間的差異
0
A
回答
0
要解決您的問題,您需要將字符串或整數字段轉換爲日期時間字段,然後使用日期函數。
假設它是一個字符串字段:
create function dbo.DatePictureToDateTime(@datePicture varchar(20))
returns datetime
as
begin
return
case
-- YYYYMM case
when @datePicture like '[0-9][0-9][0-9][0-9][0-1][0-9]'
then convert(datetime, left(@datePicture, 4) + '-' + substring(@datePicture, 5, 2) + '-01', 121)
-- YYYYMMDD case
when @datePicture like '[0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]'
then convert(datetime, left(@datePicture, 4) + '-' + substring(@datePicture, 5, 2) + '-' + substring(@datepicture, 7, 2), 121)
-- Add your own cases for different date strings you have
end
end
然後使用它是這樣的:
select dbo.DatePictureToDateTime(datePicture), datePicture
from (
select '201103' as datepicture
union all select '20110330' as datepicture
)x
如果日期字段是一個整數
dbo.DatePictureToDateTime(cast(dateInteger as varchar(20))
要轉換個月差異,請使用datediff
:
-- Datediff returns the number of period ends between the two datetimes
-- in this case it returns the number of month ends,
-- i.e. how many midnights on the last day of a month
datediff(month, dateField, dbo.DatePictureToDateTime(datePictureField))
注DATEDIFF的定義:
- 從一月31日至2月1日爲1天的差異,也爲1月的差異。
- 從2月1日至2月28日是27天的差額,但零個月。
如果這不是你想要的,你必須問另一個問題。日期計算很複雜。
0
的字符串轉換日期與(可能需要設定轉換格式)
CONVERT(DATE, @DateAsString)
轉換的YearMonth詮釋到YearMonthDay(在第一個月)一個日期,然後到日期與
CONVERT(DATE, CAST((@DateAsInt*100 + 1) AS VARCHAR(10)), 101)
因此,在一行:
DECLARE @DateAsInt INT = 201203
DECLARE @DateAsString VARCHAR(19) = '2011-12-31 00:00:00'
SELECT DATEDIFF(MONTH, CONVERT(DATE, @DateAsString), CONVERT(DATE, CAST((@DateAsInt*100 + 1) AS VARCHAR(10)), 101))
相關問題
- 1. 服務器和客戶端之間的日期時間差異
- 2. 日期時間和日期格式之間的差異天數
- 3. System.IO.IOException:客戶端和服務器之間存在時間和/或日期差異
- 4. 日期時間之間的差異
- 5. 時間和日期時間之間的Rails時區差異
- 6. 與客戶端和服務器的時間/日期差異?
- 7. 2個時間戳之間的日期和時間差異?
- 8. 日期和時間之間的時差
- 9. 日期之間的差異
- 10. 日期之間的差異
- 11. 參數和值之間的SQL差異
- 12. SQL服務器中存儲的日期時間爲整數
- 13. PHP和MySQL中的日期時間之間的差異
- 14. 計算報告與服務器日期之間的差異
- 15. 計算服務器和用戶時間之間的差異
- 16. 服務器時間差異
- 17. 在javascript中找到兩個日期時間之間的差異
- 18. 數據庫中行之間的日期時間差異
- 19. 在兩個日期(日期時間)之間的差異
- 20. 如何獲取兩個日期時間值之間的差異?
- 21. SQL中時間列之間的差異
- 22. 計算輸入的日期和時間之間的差異?
- 23. Java jsr310:日期和時間之間的差異
- 24. 開始日期和系統時間之間的差異
- 25. 找到兩個日期時間之間的微小差異
- 26. PHP找到兩個日期時間之間的差異
- 27. 小數格式的2個日期時間之間的差異
- 28. 如何獲得兩個日期之間日差的整數?
- 29. SQL日期時間格式差異
- 30. 得到了一個服務器端的時間和客戶端時間之間的差異,並顯示它
你需要告訴我們這裏有很多的要求。你的日期之一有一天 - 另一天沒有。你想把你的約會當成沒有一天或你的絃樂一樣在同一天嗎? – Hogan
字符串有不同的日子。我不在乎它是哪一天。我只需要不同的月份。謝謝。 –
您應該停止在字符串列中存儲日期。如果您將日期時間值存儲在日期時間數據類型中,則這變得非常簡單。爲了獲得差異,你首先必須將它們轉換爲日期時間,然後使用DATEADD變得簡單。 –