我想時間列舍宿舍,我搜索了論壇,發現這個漂亮的代碼:SQL變化DATEADD數據類型
select dateadd(minute, datediff(minute, 0, GETDATE())/15 * 15, 0)
問題是這樣給我的時間作爲一個時間戳列,與日期1900-01-01,而我只想要這個時間。我找不到如何做到這一點。
我想時間列舍宿舍,我搜索了論壇,發現這個漂亮的代碼:SQL變化DATEADD數據類型
select dateadd(minute, datediff(minute, 0, GETDATE())/15 * 15, 0)
問題是這樣給我的時間作爲一個時間戳列,與日期1900-01-01,而我只想要這個時間。我找不到如何做到這一點。
這會對您有所幫助。
DECLARE @datetime datetime
SET @datetime = (select dateadd(minute, datediff(minute,0,GETDATE())/15 * 15, 0))
SELECT CAST(DATEPART(hour, @datetime) as varchar(2)) +
':' + CAST(DATEPART(minute, @datetime)as varchar(2))
thx!我對SQL很陌生,一直在想這個,@字符意味着一個自定義的構建函數? ' – bramvs 2014-11-06 12:06:39
'用於指定局部變量。 '@@'指定全局變量 – 2014-11-06 12:10:51
@前綴用於TSQL中的局部變量 – 2014-11-06 12:14:40
SELECT CONVERT(VARCHAR(10),
dateadd(minute,
datediff(minute,0,GETDATE())/15 * 15, 0),
108)
使用轉換方法來獲取時間。
SELECT
CONVERT(VARCHAR(10),
dateadd(minute,
datediff(minute ,0,GETDATE())/15 * 15, 0),
108)
108在上面的查詢顯示時間格式。您可以根據您的要求更改它。
這應該工作
SELECT CAST(DATEADD(minute,
DATEDIFF(minute, 0, GETDATE())/15 * 15, 0) AS TIME(0));
您沒有指定要使用的SQL Server版本。
由於SQL Server 2008我們有時間數據類型(http://msdn.microsoft.com/en-us/library/bb677243(v=sql.100).aspx)。
SELECT DateAdd(mi, DateDiff(mi, 0, GetDate())/15 * 15, 0) As original_value
, Convert(time, DateAdd(mi, DateDiff(mi, 0, GetDate())/15 * 15, 0)) As sql_2008_onwards
, Convert(char(10), DateAdd(mi, DateDiff(mi, 0, GetDate())/15 * 15, 0), 108) As pre_sql_2008
用最後一個選項,您的最終值仍然是一段文字。理想情況下,您應該將其轉換回datetime
值(Convert(datetime, <rest of code>)
)
您沒有指定使用的是哪個版本的SQL Server。由於SQL Server 2008我們有** time **數據類型(http://msdn.microsoft.com/en-us/library/bb677243(v=sql.100).aspx)。因此,你可以只是'鑄造(...隨着時間)' – gvee 2014-11-06 13:19:33