将SQL server中的字符串类型转换为日期类型
本文关键字:类型转换 日期 类型 字符串 SQL server | 更新日期: 2023-09-27 18:05:37
例如:我让用户输入日期
<asp:TextBox ID="date" runat="server" Width="200px" Text = "20110815"></asp:TextBox>
<ajaxToolkit:CalendarExtender ID="CalendarExtender" runat="server" PopupPosition="BottomLeft" PopupButtonID="date"
TargetControlID="date" Format="yyyyMMdd" FirstDayOfWeek="Monday">
</ajaxToolkit:CalendarExtender>
问题是,在我的存储过程中,我试图使用该字符串作为日期类型
@StartDate nvarchar(8),
@StartDate_int int =0
AS
BEGIN
select @StartDate_int=CAST(convert(varchar(12),DATEADD(week,DATEDIFF(week,0,@StartDate),0),112) as int)
select * from table where date(has int type)// = @StartDate_int
END
当我尝试在MS服务器管理工作室测试存储过程时,我定义了@StartDate = 20110101的参数,存储过程确实返回了所有正确的行,但是当我尝试在asp.net项目中使用存储过程时,将@StartDate参数设置为文本框中的字符串,它没有返回任何行。
<asp:SqlDataSource ID="SqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SelectSpecificTimeSheet" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:SessionParameter DefaultValue="user" Name="UserName"
SessionField="loginState" Type="String"/>
<asp:ControlParameter DefaultValue="20110815" ControlID="date" Name="StartDate" PropertyName="Text" Type="String"/>
<asp:Parameter Name="StartDate_int" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
谁能告诉我我哪里做错了?
几点建议:
-
您可以使用Sql Profiler来查看哪些数据来到Sql server (Microsoft Sql Profiler for Enterprise Sql server或AnjLab Sql Profiler for Sql server Express)
-
创建单独的类来调用sql server (repository/data)管理器层),并用于访问您的数据经理——这样你就能控制事情的发展有
http://linesofcode.net/snippets/45
看看这些例子。使用SQL Profiler捕获SQL Server的输入是一个好主意,因为@cheburek建议这样你就知道你的服务器页面正在传递给RDBMS。