我正在使用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,而不是分钟&秒作为单独的值......
答案 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