[英]Minus one date from another in MySQL request?
我有帶有start_date
和end_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個月
返回周期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.