[英]How to find the number of days between two dates
我有一個基本的查詢:
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
我想在輸出中添加另一列...讓我們稱之為“差異”以找出'dtcreated'和'dtlastupdated'之間的天數所以例如如果記錄1的dtcreated為1/1/11並且dtlastupdated是1/1/12,“差異”列將是“365”。
這可以在查詢中完成嗎?
你會使用DATEDIFF
:
declare @start datetime
declare @end datetime
set @start = '2011-01-01'
set @end = '2012-01-01'
select DATEDIFF(d, @start, @end)
results = 365
所以對於您的查詢:
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
, DATEDIFF(d, dtCreated, dtLastUpdated) as Difference
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
要查找兩個日期之間的天數,請使用:
DATEDIFF ( d, startdate , enddate )
我會使用DATE_DIFF函數來提供如下值:
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
, DATEDIFF(d, dtLastUpdated, dtCreated) AS Difference
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
編輯:如果使用MySQL你省略了'd'離開你
DATEDIFF(dtLastUpdated, dtCreated) AS Difference
如果您使用MySQL,則有DATEDIFF函數計算兩個日期之間的天數:
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
, DATEDIFF(dtLastUpdated, dtCreated) as Difference
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
DATEDIFF(d, 'Start Date', 'End Date')
做到這一點
DATEDIFF函數用於計算所需日期之間的天數
例如,如果您是字符串格式的給定日期的差異當前日期
SELECT * , DATEDIFF(CURDATE(),STR_TO_DATE('01/11/2017', '%m/%d/%Y')) AS days FROM consignments WHERE code = '1610000154'
這里, STR_TO_DATE ():取一個字符串並返回格式掩碼指定的日期;
對於你的例子:
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
, DATEDIFF(dtLastUpdated, dtCreated) as Difference
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > '2012-01-01 00:00:00')
在mysql服務器5.7.17上測試
正如@Forte L.所提到的,你也可以做到以下幾點;
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
, DATEDIFF(day, dtCreated, dtLastUpdated) Difference
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
DECLARE @Firstdate DATE='2016-04-01',
@LastDate DATE=GETDATE(),/*get today date*/
@resultDay int=null
SET @resultDay=(SELECT DATEDIFF(d, @Firstdate, @LastDate))
PRINT @resultDay
兩天之間獲得天數
DECLARE @date1 DATE='2015-01-01',
@date2 DATE='2019-01-01',
@Total int=null
SET @Total=(SELECT DATEDIFF(DAY, @date1, @date2))
PRINT @Total
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.