点你的数据库右键 新建一个查询
输入
exec [dbo].[SelectStartTime] '2007-5-20 8:00','2007-5-20 9:00'
如果还没有结果那么你把时间段放大点
exec [dbo].[SelectStartTime] '2004-4-4','2007-5-5'
输入
exec [dbo].[SelectStartTime] '2007-5-20 8:00','2007-5-20 9:00'
如果还没有结果那么你把时间段放大点
exec [dbo].[SelectStartTime] '2004-4-4','2007-5-5'
执行结果是 1899-12-30 07:25:00.000再用存储器过程运行还是没有结果- -!
运行[dbo].[SelectStartTime] ( @Time1 = 1899-12-30 07:00:00.000, @Time2 = 1899-12-30 08:00:00.000 ).starttime
-----------------------
没有行受影响。
(返回 0 行)
@RETURN_VALUE = 0
完成 [dbo].[SelectStartTime] 运行。
[dbo].[SelectStartTime] ( @Time1 = '8:00', @Time2 = '9:00' ).
他执行的是调用你的存储过程然后返回你存储过程里return里的东西
你的return是空 所以永远都是@RETURN_VALUE = 0
你在查询分析器里执行exec [dbo].[SelectStartTime] '2004-4-4','2007-5-5' 返回的就是你存储过程真正执行的东西了
在.net里用ado会得到你要的结果的.
比如已知6:00 到12:00 类型已经转成datetime了
数据表中都是一个时间点比如8:35 9:30 14:50之类的 类型是datetime
如何实现阿
弄了一个晚上了都不成功。
DateTime Time2 = Convert.ToDateTime(time2);
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand cmd= new SqlCommand("SelectStartTime",conn); cmd.CommandType = CommandType.StoredProcedure; SqlParameter paraTime1 = new SqlParameter("@Time1", SqlDbType.DateTime);
paraTime1.Value = Time1;
cmd.Parameters.Add(paraTime1); SqlParameter paraTime2 = new SqlParameter("@Time2", SqlDbType.DateTime);
paraTime2.Value = Time2;
cmd.Parameters.Add(paraTime2); conn.Open();
try
{
SqlDataReader myreader = cmd.ExecuteReader();
if (myreader.HasRows)
{
Label5.Text = myreader.GetValue(1).ToString();
}
else
Label5.Text = "没有这个纪录";
myreader.Close();
}
catch
{
}
conn.Close();存储过程 ;
ALTER PROCEDURE dbo.SelectStartTime
@Time1 datetime,
@Time2 datetime
AS
select starttime from sys_flight where convert(varchar(5),starttime,14) > @Time1 and convert(varchar(5),starttime,14) <@Time2
RETURN
运行显示始终是没有这条纪录