2009-11-03 77 views
1

我正在使用SQL Server 2005,並且我有一個DateTime列。SQL日期函數問題

我怎麼能乘以1.2日期時間列的小時和分鐘,並返回新值

因此,像:

SELECT 
MyColMinute = DATEPART(minute, myCol) * 1.2 
MyColHour = DATEPART(second, myCol) * 1.2, 
MyCol 
From NyTable 

當然以上都不行!

因此,例如myCol的值可能是'1900-01-01 00:30:00.000'。我想將時間部分增加20%(* 1.2),所以我希望返回值爲'1900-01-01 00:36:00.000'。其實我是想返回一個有效DATATIME,而不是分&秒作爲單獨的值...

+0

請問您能否提供一個示例輸入和預期輸出? – shahkalpesh

+0

因此,例如myCol可能具有'1900-01-01 00:30:00.000'的值,並且我想將時間部分增加20%(* 1.2),所以我希望返回值爲'1900-01- 01 00:36:00.000' – Alex123

回答

0
SELECT 
DATEADD(
    s, 
    DATEDIFF(s,DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0),GETDATE())*1.2, 
    DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0) 
) 

取到目前爲止的一天中的秒數,乘以1.2,然後將其添加回從午夜開始的一天。如果你想要更多的粒度,我想你可以毫秒使用毫秒。

+0

完美,謝謝! – Alex123

0

試試下面的代碼:

SELECT DATEADD(SECOND,DATEPART(second, '2001-01-23 01:02:50') * 1.2, DATEADD(MINUTE,DATEPART(minute, '2001-01-23 01:02:50') * 1.2,'2001-01-23 01:02:50')) 

可以更換「2001年1月23日1點02分50秒'與你的專欄並添加「來自yourtable」。

+0

我實際上想要返回一個有效的DataTime,您的查詢返回2列類型雙重 – Alex123

+0

我編輯了我的答案。請檢查。 – Himadri

2

此:

SELECT DATEADD(n, 
       DATEPART(minute, t.column) * 1.2, 
       DATEADD(s, DATEPART(second, t.column) * 1.2, t.column)) 
    FROM TABLE t 

...將在原有基礎上的日期時間值的時間。如果你想成爲在秒值的頂部,使用添加了分:

SELECT DATEADD(n, DATEPART(minute, DATEADD(s, DATEPART(second, t.column) * 1.2, t.column)) * 1.2, DATEADD(s, DATEPART(second, t.column) * 1.2, t.column)) 
    FROM TABLE t 
0

其實你錯過了MyColMinute

一個逗號試試這個

0
declare @tbl table(dates datetime) 
insert into @tbl 
select '1900-01-01 00:30:00.000' union all select '2009-11-03 12:04:56.370' union all 
select '2009-11-03 09:08:51.380' 

select OriginalDates = dates 
     ,MyColMinute=DATEADD(mi, DATEPART(mi,dates) * 1.2, dates) 
     ,MyHourMinute = DATEADD(hh, DATEPART(hh,dates) * 1.2, dates) 
from @tbl