时间类型转换和数值换算问题,高手帮帮

veras 2006-11-27 11:34:20
一、2006-8-28 10:3:47怎样转换为060828100347
二、小于60按1算,61-120按2算,121-160按3算,大于等于161按4算

初学sql,希望大家不惜赐教,谢谢^_^
...全文
211 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2006-11-28
  • 打赏
  • 举报
回复
declare @字段 as int
set @字段 = 60

select case when @字段 <= 60 then 1 --这里是小于等于吧?
when @字段 between 61 and 120 then 2
when @字段 between 121 and 160 then 3
when @字段 >= 161 then 4
end as 字段
字段
-----------
1

(所影响的行数为 1 行)

declare @字段 as int
set @字段 = 100

select case when @字段 <= 60 then 1 --这里是小于等于吧?
when @字段 between 61 and 120 then 2
when @字段 between 121 and 160 then 3
when @字段 >= 161 then 4
end as 字段
字段
-----------
2

(所影响的行数为 1 行)


declare @字段 as int
set @字段 = 150

select case when @字段 <= 60 then 1 --这里是小于等于吧?
when @字段 between 61 and 120 then 2
when @字段 between 121 and 160 then 3
when @字段 >= 161 then 4
end as 字段

字段
-----------
3

(所影响的行数为 1 行)


declare @字段 as int
set @字段 = 250

select case when @字段 <= 60 then 1 --这里是小于等于吧?
when @字段 between 61 and 120 then 2
when @字段 between 121 and 160 then 3
when @字段 >= 161 then 4
end as 字段
字段
-----------
4

(所影响的行数为 1 行)



dawugui 2006-11-28
  • 打赏
  • 举报
回复
小于60按1算,61-120按2算,121-160按3算,大于等于161按4算

select case when 字段 <= 60 then 1 --这里是小于等于吧?
when 字段 between 61 and 120 then 2
when 字段 between 121 and 160 then 3
when 字段 >= 161 then 4
end as 字段
from tb
dawugui 2006-11-28
  • 打赏
  • 举报
回复
declare @dt as datetime
set @dt = '2006-8-28 10:3:47'
select replace(replace(replace(right(convert(varchar(19),@dt,120),17),'-',''),':',''),' ','') as 结果

结果
------------
060828100347

(所影响的行数为 1 行)
cpp2017 2006-11-28
  • 打赏
  • 举报
回复
case when 字段<60 then 1 else case when 字段<120 then 2 else case when 字段<160 then 3
else 4 end end end
cpp2017 2006-11-28
  • 打赏
  • 举报
回复
select convert(varchar(20),Cast('2006-8-28 10:3:47' as datetime),12) + ( select replace( convert(varchar(20),Cast('2006-8-28 10:3:47' as datetime),108),':',''))


veras 2006-11-28
  • 打赏
  • 举报
回复
谢谢谢谢各位的热心帮助
marco08 2006-11-28
  • 打赏
  • 举报
回复
--第二個問題可以用 case when then else end 判斷
marco08 2006-11-28
  • 打赏
  • 举报
回复
declare @dt datetime
set @dt='2006-8-28 10:3:47'
select right(convert(char(8), @dt, 112), 6)+replace(convert(char(8), @dt, 108), ':', '')

--result
060828100347

(1 row(s) affected)
shawnwan 2006-11-28
  • 打赏
  • 举报
回复
declare @dt as datetime
set @dt = '2006-8-28 10:3:47'
select replace(replace(replace(right(convert(varchar(19),@dt,120),17),'-',''),':',''),' ','') as 结果

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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