簡體   English   中英

在MySQL請求中減去另一個日期的日期?

[英]Minus one date from another in MySQL request?

我有帶有start_dateend_date表。 我需要找到持續時間( end_date-start_date )。 有人可以在查詢中建議我該怎么做嗎? 我是否會以某種方式獲得新變量,例如查詢中的duration=end_date-start_date

編輯如果我使用mminus,它會給我:

2012-07-01減去2012-01-01 = 600

在2011年7月27日至2011年7月6日= 21的情況下,六個月后的600天如何? 所以我認為是幾天?
即使日期在月中,有功能可以實際獲取多少個月。 例如“ 6月3日”和“ 7月27日”是2個月

使用PERIOD_DIFF

返回周期P1和P2之間的月數。 P1和P2的格式應為YYMM或YYYYMM。 請注意,期間參數P1和P2不是日期值。 所以嘗試

SELECT PERIOD_DIFF(
                   DATE_FORMAT('2011-07-27','%Y%m'),
                   DATE_FORMAT('2011-06-03','%Y%m')
                  ) AS durationInMonths

如果您想知道DateTime不同,可以使用TimeDiff

select 
 (Hour(Duration) / 24)/365 as Year, 
 (Hour(Duration) / 24)%365 as Day, 
 (Hour(Duration) % 24) as Hours, 
 MINUTE(Duration) as Minutes, 
 SECOND(Duration) as Seconds
 from
(
SELECT ADDTIME(NOW(),'1000:27:50') as end_datetime, NOW() as start_datetime,
TIMEDIFF(ADDTIME(NOW(),'1000:27:50'), NOW()) AS Duration
) x;

如果您想知道日期不同,可以使用DateDiff()

select DATEDIFF('2011-06-06','2011-05-01');

您可以使用*,但要獲取持續時間,您需要在其后添加額外的列

select *, DATEDIFF(updated_at, created_at) from users;

為了獲得最佳實踐,最好為用戶命名u,為額外列命名持續時間。 因此,您可以在頂部看到“持續時間”標題。 如果將sql過程導出到excel,則很好。

select u.*, DATEDIFF(updated_at, created_at) as duration from users u;

同樣從您的php或rails代碼中,您可以調用該給定的變量名稱。 在鐵軌上

users =User.find_by_sql("select u.*, DATEDIFF(updated_at, created_at) as duration from users u")

users.first.duration
SELECT end_date - start_date AS duration FROM table ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM