我正在进行sql查询,我想在其中添加datepart和time部分。在时间部分分钟将是20,40,59。第二个将永远是00.为此我使用了以下查询:因为我只有20分钟的持续时间报告,如0-20分钟,21-40分钟和任何时间41-59分钟。
DECLARE @RandomDate datetime
DECLARE @HH INT
DECLARE @MM INT
DECLARE @S INT=00
SELECT @RandomDate=
DATEADD(day,ROUND(DATEDIFF(day,GETDATE(),GETDATE())*(CHECKSUM(NEWID())), 5),
DATEADD(second, CHECKSUM(NEWID()) % 48000, GETDATE()))
SELECT @HH= DATEPART(hour,@RandomDate),@MM=DATEPART(MINUTE,@RandomDate)
SELECT @RandomDate,@HH,@MM,@S
SELECT CONVERT(DATE,@RandomDate)+
DATEPART(hour,@RandomDate)+DATEPART(MINUTE,@RandomDate)+00
但它显示错误为
Operand type clash: date is incompatible with int
在
位置SELECT CONVERT(DATE,@RandomDate)+
DATEPART(hour,@RandomDate)+DATEPART(MINUTE,@RandomDate)+00
答案 0 :(得分:1)
如果您只想删除DateTime
值的秒部分,则可以使用DATEADD
和DATEPART
更简单地执行此操作:
SELECT DATEADD(Second, -DATEPART(Second, @RandomDate), @RandomDate)
如果您想从代表小时,分钟和秒的各个部分设置DateTime
的时间部分,您可以执行以下操作:
SELECT DATEADD(HOUR, @HH,
DATEADD(MINUTE, @MM,
DATEADD(SECOND, @S, CAST(CAST(@RandomDate As Date) As DateTime))
)
)
双重转换为date
并返回datetime
会将原始时间部分截断为00:00:00,而DATEADD会将各个值添加到日期时间。
答案 1 :(得分:1)
我猜您需要将日期变量的小时和分钟添加为分钟
SELECT dateadd(mi, @HH * 60 + @MM, convert(datetime, convert(date,@RandomDate)))
答案 2 :(得分:0)
试试这个......
SELECT TRY_PARSE(FORMAT(@RandomDate, N'yyyy-MM-dd-HH:mm') AS DATETIME)
...更新
SELECT CAST(CONVERT(VARCHAR(16), @RandomDate, 120) AS DATETIME)