如何才能在SQL中提取DateTime字段的時間部分?對於我的項目,我必須返回具有DateTime字段的下午5時的時間戳無論日期是什麼SQL中DateTime字段的時間部分
回答
在SQL Server中,如果你只需要hh:mi
,你可以使用:
DECLARE @datetime datetime
SELECT @datetime = GETDATE()
SELECT RIGHT('0'+CAST(DATEPART(hour, @datetime) as varchar(2)),2) + ':' +
RIGHT('0'+CAST(DATEPART(minute, @datetime)as varchar(2)),2)
這不會格式正確的分鐘<10即10 :09結果10:9 – LarryBud
@LarryBud我修正了在編輯 - 添加RIGHT函數調用。 –
數據這將返回時間只有
對於SQL Server:
SELECT convert(varchar(8), getdate(), 108)
說明:
getDate()
給出當前日期和時間。
108
正在格式化/給我們所需的部分,即在這種情況下的時間。
varchar(8)
給出了該部分的字符數。
像:
如果你寫varchar(7)
那裏,它會給你00:00:0
如果你寫varchar(6)
那裏,它會給你00:00:
如果你寫varchar(15)
那裏,它還是會給予你00:00:00
,因爲它是給只是時間部分的輸出。 SQLFiddle Demo
對於MySQL:
SELECT DATE_FORMAT(NOW(), '%H:%i:%s')
[訪問此](http://www.sql-server-helper.com/tips/date-formats.aspx)獲得更多幫助。 – Sohail
如果只希望你的日期時間的小時,那麼你可以使用DATEPART()
- SQL服務器:
declare @dt datetime
set @dt = '2012-09-10 08:25:53'
select datepart(hour, @dt) -- returns 8
在SQL Server 2008+可以CAST()
隨着時間:
declare @dt datetime
set @dt = '2012-09-10 08:25:53'
select CAST(@dt as time) -- returns 08:25:53
這很好,它可以很容易地計算這樣的時間差異: SELECT DATEDIFF(mi,CAST(@SomeDate AS TIME),CAST(@AnotherDate AS TIME)) – Dave
「對於我的項目,我有返回DateTime字段的時間戳爲5pm的數據,無論日期是什麼。「
所以我認爲你的意思是你需要日期而不是時間。你可以做這樣的事情得到一個日期爲5:00的時間:
SELECT CONVERT(VARCHAR(10), GetDate(), 110) + ' 05:00:00'
在SQL Server 2008中試試這個:
select *
from some_table t
where convert(time,t.some_datetime_column) = '5pm'
如果你想採取隨機時間值,並將其調整所以時間組件是5pm,那麼在SQL Server 2008中有很多方法。首先,您需要每天的開始時間(例如,2011-09-30 00:00:00:00)。
一種技術,適用於Microsoft SQL Server的所有版本,以及如Sybase的所有版本的工作原理是利用
convert/3
到datetime值轉換爲一個缺乏時間組件,然後回一個日期時間值VARCHAR:select convert(datetime,convert(varchar,current_timestamp,112),112)
以上爲您提供了開始的日當天。
在SQL Server 2008,不過,你可以說這樣的事情:
select start_of_day = t.some_datetime_column - convert(time, t.some_datetime_column) , from some_table t
這很可能更快。
一旦你有了一天的開始,下午5點很容易。只需添加17小時,啓動的天你的價值:
select five_pm = dateadd(hour,17, t.some_datetime_column
- convert(time,t.some_datetime_column)
)
from some_table t
這應該剝去日期部分:
select convert(datetime,convert(float, getdate()) - convert(int,getdate())), getdate()
,並用1900-01-01默認日期返回日期時間。
第二個表達式ROUND UP日期,需要使用'floor(convert(float))',而不是'convert(int)' 'convert(datetime,convert(float,ok_date_added)-floor(convert(float,ok_date_added))) ' – Rijen
我知道這是一個老問題,但由於其他的答案都
- 返回字符串(而不是日期時間),
- 依靠日期的內部表示(轉換爲float,int和背部)或
- 需要SQL Server 2008或以後,
我想我會添加一個「純粹」的選項,只需要日期時間的操作和使用SQL Server的作品2005+:
SELECT DATEADD(dd, -DATEDIFF(dd, 0, mydatetime), mydatetime)
此計算日期零(1900-01-01)和給定的日期之間的差(在整個天),然後減去從給定日期的是天數,從而它的日期分量設置爲零。
很酷,但對於SQL Server 2008及更高版本,更容易說'SELECT CAST(mydatetime AS time)'(從其他答案中推斷出來)。 –
@JeppeStigNielsen除非使用DATETIMEOFFSET,否則CAST(mydatetime AS時間)將不起作用。 – JumpingJezza
@JumpingJezza不確定你的意思。我有一個'mytable'表,其列'mydatetime'的類型爲'(datetime,not null)',對我來說這工作正常:'SELECT CAST(mydatetime AS time)AS TimePart,* FROM mytable' –
SELECT DISTINCT
CONVERT(VARCHAR(17), A.SOURCE_DEPARTURE_TIME, 108)
FROM
CONSOLIDATED_LIST AS A
WHERE
CONVERT(VARCHAR(17), A.SOURCE_DEPARTURE_TIME, 108) BETWEEN '15:00:00' AND '15:45:00'
雖然這段代碼可能回答這個問題,但提供關於**如何**和**爲什麼**解決問題的其他上下文將提高答案的長期價值。 – Alexander
- 1. 比較SQL Server 2005中DateTime數據類型的時間部分
- 2. 在SQL Server2008中使用DateTime列的時間部分
- 3. 比較MySQL中的日期,忽略DateTime字段的時間部分
- 4. 從DateTime中刪除時間部分
- 5. 從DateTime字段中刪除時間
- 6. c#只顯示DateTime的時間部分
- 7. 結合日期和時間字段爲DateTime,SQL Server 2008中
- 8. 如何從日期時間字段中刪除日期部分字段在sql
- 9. SQL Server - 將DATETIME的DATE部分添加到DATETIME的TIME部分
- 10. MySQL中的datetime字段和NOW()之間的時間間隔
- 11. Django DateTime字段生成沒有時區的時間戳字段
- 12. mongoengine datetime字段和python日期時間
- 13. 刪除SQL中字段的一部分
- 14. SQL中datetime字段的校驗和
- 15. 如何僅在DateTime對象中刪除C#中DateTime的時間部分?
- 16. 如何通過MySQL中的DateTime字段的小時部分來過濾查詢?
- 17. SQL查詢從時間段拆分日期部分
- 18. 如何在datetime的時間部分添加分鐘
- 19. 在DateTime字段中隱藏日期部分MS Dynamics CRM 2011
- 20. CSV轉換時間字段到數據庫中的datetime對象
- 21. 更新Laravel雄辯模型字段中的時間DateTime
- 22. Rails 5中datetime列的渲染日期和時間字段
- 23. 從SQL Server的DateTime字段獲取'date'
- 24. DateTime字段的內部格式
- 25. SQL WHERE date部分字段和部分預定義字符串
- 26. SQL - 其中字段隨時間變化
- 27. 在ADO(ODBC)中使用datetime參數失去時間部分
- 28. T-SQL:如何更新日期時間字段的日期部分?
- 29. 在T-SQL中動態分割日期時間字段
- 30. 在休眠時比較時間部分的日期時間字段
此問題已被多次詢問 - 請使用搜索。 [SQL Server](http://stackoverflow.com/questions/3201432/how-to-get-time-part-from-sql-server-2005-datetime-in-hhmm-tt-format),[MySQL]( http://stackoverflow.com/questions/2951858/extract(http://stackoverflow.com/questions/2951858/extract)(http://stackoverflow.com/questions/2951858/extract) -time-part-from-timestamp-column-in-oracle) – Bridge