将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 server中的字符串类型转换为日期类型

几点建议:

  1. 您可以使用Sql Profiler来查看哪些数据来到Sql server (Microsoft Sql Profiler for Enterprise Sql server或AnjLab Sql Profiler for Sql server Express)

  2. 创建单独的类来调用sql server (repository/data)管理器层),并用于访问您的数据经理——这样你就能控制事情的发展有

http://linesofcode.net/snippets/45

看看这些例子。使用SQL Profiler捕获SQL Server的输入是一个好主意,因为@cheburek建议这样你就知道你的服务器页面正在传递给RDBMS。

相关文章: