2011-08-16 11 views
1

で日付型に文字列から変換する: 私は聞かせてたとえばSQLサーバ

<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 Server管理スタジオでストアドプロシージャをテストしようとすると、@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> 

誰かが私が間違っていたものを私を見ることができます:(

+2

ストアドプロシージャが呼び出しコードの代わりに変換を実行するのはなぜですか? –

+0

ああ私はsqlサーバを学んでいるので、私はSQLで変換をしたい – Xitrum

+0

girdviewに手作業でデータをバインドしようとした時にみんなに感謝し、それは働いた – Xitrum

答えて

0

いくつかの提案:

  1. あなたは、データがエンタープライズ用のSQL Server(マイクロソフトSQLプロファイラに来るものを見るために、SQLプロファイラを使用することができますSQL Server Expressの場合はAnjLab Sql Profiler

  2. 別のクラスを作成してSQL Server(リポジトリ/データ マネージャ層)とデータ マネージャにアクセスするために使用 - この方法であなたが常に存在

0

http://linesofcode.net/snippets/45

に何が起こっているかを制御することができますこれらの例を見てください。 @cheburekが示唆するように、Sql Profilerを使用してSQL Serverへの入力を取得することをお勧めします。これにより、サーバーページがRDBMSに渡されている内容を知ることができます。