在我的Auctions
表內,我有一個名爲Auction_StartDate
的列。一行的值是這樣的:2012-10-27 13:45:30
。在MySQL中的下一個最接近的日期和時間
我需要一個查詢,將返回下一個最接近的日期和時間之後。因此,如果下一個Auction_StartDate爲2012-10-27 18:30:00
,則應在日期變爲2012-10-28
之前返回。
在我的Auctions
表內,我有一個名爲Auction_StartDate
的列。一行的值是這樣的:2012-10-27 13:45:30
。在MySQL中的下一個最接近的日期和時間
我需要一個查詢,將返回下一個最接近的日期和時間之後。因此,如果下一個Auction_StartDate爲2012-10-27 18:30:00
,則應在日期變爲2012-10-28
之前返回。
可能是這樣一個幫助
SELECT DATE(Auction_StartDate) closestDate
FROM Auctions
WHERE DATE(Auction_StartDate) > '2012-10-27'
order by Auction_StartDate ASC
limit 1
您需要添加'ORDER BY closestDate ASC',這會發生[點擊此處](http://sqlfiddle.com/#!2/933ae/1) –
@JohnWoo:我們需要關閉日期和DESC永遠不會給我們最接近的,我認爲它必須是ASC :) –
我需要包含在結果中的時間。 – Alec
如果不使用LIMIT and ORDER BY
子句,則可以使用MIN
查找最接近的值。
SELECT MIN(DATE(Auction_StartDate)) closestDate
FROM Auctions
WHERE DATE(Auction_StartDate) > '2012-10-27'
而不是MIN函數,我們可以使用LIMIT優化查詢 –
@Ravi嘗試修復您的查詢:)它可以返回無效的日期.. –
感謝您糾正約翰,我檢查了你的小提琴,現在看到你已經安排在ASC訂單,所以在你的情況下,它完美的作品:) –
如果你的意思是每一行做到這一點,試試這個:
SELECT a1.id,
(SELECT MIN(a2.Auction_StartDate)
FROM Auctions a2
WHERE a2.Auction_StartDate > a1.Auction_StartDate) AS nextStartDate
FROM Auctions a1
SELECT (case when Hour(StartDate)>=12 then DATE_ADD(StartDate,
INTERVAL 1 DAY) else StartDate end) as 'date' FROM table
------------------------------
pleaes add your column name where is static date :
est on : http://sqlfiddle.com/#!2/b8435/19
SELECT (case when Hour(StartDate)>=12 then
DATE_FORMAT(DATE_ADD(StartDate ,INTERVAL 1 DAY), '%Y-%m-%d')
else DATE_FORMAT(StartDate , '%Y-%m-%d') end) as 'date' from tabel
你只需要下一個最近的日期?或者您是否需要具有下一個最近日期的行的ID?另外,你是否說你只想在同一個日曆日的結果?或者如果下一個最接近的是「2012-10-28 05:00:00」,那可以接受嗎? – liquorvicar
是的,隨着時間的推移,我需要它。 – Alec
這不是我所問的。您是否需要下一個最近日期的行的ID?下一個最近的日期是否必須在同一日曆日? – liquorvicar