DATEADD后日期时间转换

wxn1983 2011-06-27 07:57:45
declare @volTime varchar(50) --获取时间,格式应为:2011-03-16 12:15:00
declare @date_from smalldatetime --开始日期变量
declare @date_to smalldatetime --结束日期变量



set @date_from='2010-01-01' --为开始日期赋值
set @date_to='2011-06-27' --为结束日期赋值
set @volTime=convert(varchar,(@date_from +(ABS(CAST(CAST(NewID() AS BINARY(8))AS INT))%CAST((@date_to - @date_from) AS INT))),120) --获取随机年月日,格式:2011-03-16 00:00:00
set @volTime=DATEADD(second,ABS(CAST(CAST(NewID() AS BINARY(2)) AS INT)),@volTime)
--增加时间秒,但格式变成了:16 03 2011 5:43PM

请问:如何把增加时间秒后的格式:16 03 2011 5:43PM转换成我需要的格式:2011-03-16 5:43:00
...全文
147 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxn1983 2011-06-27
  • 打赏
  • 举报
回复
谢谢,受用了,问题解决。有个疑问:
set @volTime=DATEADD(second,ABS(CAST(CAST(NewID() AS BINARY(2)) AS INT)),@volTime)
set @volTime=convert(varchar,@volTime,120)

为什么写成以上不行?

set @volTime=CONVERT(varchar(25),DATEADD(S,ABS(CAST(CAST(NewID() AS BINARY(2)) AS INT)),@volTime),120)

有什么区别?
zs621 2011-06-27
  • 打赏
  • 举报
回复

declare @volTime varchar(50) --获取时间,格式应为:2011-03-16 12:15:00
declare @date_from smalldatetime --开始日期变量
declare @date_to smalldatetime --结束日期变量



set @date_from='2010-01-01' --为开始日期赋值
set @date_to='2011-06-27' --为结束日期赋值
set @volTime=convert(varchar,(@date_from +(ABS(CAST(CAST(NewID() AS BINARY(8))AS INT))%CAST((@date_to - @date_from) AS INT))),120); --获取随机年月日,格式:2011-03-16 00:00:00

set @volTime=CONVERT(varchar(25),DATEADD(S,ABS(CAST(CAST(NewID() AS BINARY(2)) AS INT)),@volTime),121)
SELECT @volTime

叶子 2011-06-27
  • 打赏
  • 举报
回复

declare @volTime varchar(50)
--获取时间,格式应为:2011-03-16 12:15:00

declare @date_from smalldatetime
--开始日期变量

declare @date_to smalldatetime
--结束日期变量

set @date_from='2010-01-01'
--为开始日期赋值

set @date_to='2011-06-27'
--为结束日期赋值

set @volTime=convert(varchar,(@date_from +
(ABS(CAST(CAST(NewID() AS BINARY(8))AS INT))%
CAST((@date_to - @date_from) AS INT))),120)

--获取随机年月日,格式:2011-03-16 00:00:00
select @volTime

set @volTime=convert(varchar(20),
DATEADD(second,ABS(CAST(CAST(NewID() AS BINARY(2)) AS INT)),@volTime),120)
select @volTime
/*
2011-04-18 00:00:00
2011-04-18 15:37:47
*/

结果格式正确呀?
ymymym16888 2011-06-27
  • 打赏
  • 举报
回复
declare @volTime varchar(50) --获取时间,格式应为:2011-03-16 12:15:00
declare @date_from smalldatetime --开始日期变量
declare @date_to smalldatetime --结束日期变量

set @date_from='2010-01-01' --为开始日期赋值
set @date_to='2011-06-27' --为结束日期赋值
set @volTime=convert(varchar,(@date_from +(ABS(CAST(CAST(NewID() AS BINARY(8))AS INT))%CAST((@date_to - @date_from) AS INT))),120) --获取随机年月日,格式:2011-03-16 00:00:00
select @volTime


set @volTime=convert(varchar(20),DATEADD(second,ABS(CAST(CAST(NewID() AS BINARY(2)) AS INT)),@volTime),120)

select @volTime

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧