SQL Date函数问题

时间:2009-11-03 05:17:51

标签: sql sql-server sql-server-2005 tsql

我正在使用SQL Server 2005,我有一个DateTime列。

如何将DateTime列的小时和分钟乘以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,而不是分钟&秒作为单独的值......

5 个答案:

答案 0 :(得分: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

答案 1 :(得分: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-01-23 01:02:50”替换为您的列,并添加“from yourtable”。

答案 2 :(得分:0)

实际上你错过了 MyColMinute

中的一个逗号

试试这个

select 
DATEPART(minute, myCol) * 1.2 as MyColMinute,
 DATEPART(second, myCol) * 1.2 as MyColHour ,
MyCol
From NyTable

答案 3 :(得分: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,然后将其添加回午夜的那一天。如果你想要更多的粒度,我想你可以使用ms毫秒。

答案 4 :(得分: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