我有一个存储过程,我需要转换为标准查询。由于我使用的是SQL Server Compact,因此没有存储过程。
这是我的存储过程:
declare @colu nvarchar (max) , @hour int
set @hour = DATEPART(HH, GETDATE() )
select @hour
select @colu =
case when @hour=24
then '[12:00AM(00:00)]'
enter code here
when @hour >12 and @hour <24
then '['+ convert(varchar,@hour-12) +':00PM('+ convert(nvarchar ,@hour) +':00)]'
when @hour=12
then '[12:00PM(12:00)]'
when @hour <12 and @hour >9
then '['+convert(nvarchar ,@hour) +':00AM('+ convert(nvarchar ,@hour) +':00)]'
else '['+convert(nvarchar ,@hour) +':00AM(0'+ convert(nvarchar ,@hour) +':00)]'
end
select @colu
declare @sql nvarchar(max)
set @sql= 'select ID,'''+ @colu + ''' as time from table' -- add quote here
select @sql
exec sp_executesql @sql
像我说的那样,我有点难过。有什么想法吗?
答案 0 :(得分:0)
以下是我用来确定时间值并动态指定列名的代码:
float basalrate = 0;
DateTime HourVal = Convert.ToDateTime(PumpEditTime);
if (HourVal == null)
{
HourVal = DateTime.Now;
}
int hourval = HourVal.Hour;
int ampmhour = Convert.ToInt32(HourVal.ToString("hh"));
string hourampm = string.Empty;
if (hourval == Convert.ToInt32("24"))
{
hourampm = "[12:00AM(00:00)]";
}
else if ((hourval > 12) && (hourval < 24))
{
hourampm = "[" + ampmhour + ":00PM(" + hourval + ":00)]";
}
else if (hourval == 12)
{
hourampm = "[12:00PM(12:00)]";
}
else if ((hourval < 12) && (hourval > 9))
{
hourampm = "[" + ampmhour + ":00AM(" + hourval + ":00)]";
}
else
{
hourampm = "[" + ampmhour + ":00AM(0" + hourval + ":00)]";
}