2016-11-10 4 views
0

私はしばらく前に作成したReports用のストアドプロシージャを編集しています。 ストアドプロシージャに送信されるパラメータが、複数のコンピュータからのあらゆる種類のファンキーな形式で発生するという問題が発生しました。日付さまざまな形式でSQLに送信されていますが、どうすればこのことができますか?

私が遭遇しているフォーマットの一部

'2017年1月31日'

を '2017-31-01'

'01なってい-01-2017'

'31012017'

'20170131'

私は必死にアルを処理するための方法が必要ですこれらの異なるフォーマット。 '31012017'は私に入力エラーを与えるので、私の入力にはVARCHAR(15)の入力パラメータを使用しています。

+3

適切なデータ型(この場合は日付)を取得するためにストアドプロシージャを修正する必要があります。 –

+1

をあいまいな形式と値('01 -01-2017 ')で渡すように呼び出しコードを修正する必要があります。 、あなたはいつもちょうど推測するでしょう – Lamak

+0

これは間違いなく会話をする必要があるように聞こえる情報を提供している人/チームと一緒にそれは何らかの形のWebフォームから来ていますか?フォームを処理するアプリケーションをローカライズに合わせて更新できますか?ユースケースによっては、入力値が解析できないときに失敗するほうが良いかもしれません。 – axlj

答えて

0

私が見つけた最善の修正は以下の通り(ほぼすべての形式のために働く)だった

https://i.stack.imgur.com/MLARE.png

それはあなたが使用しているものは何でもPCフォーマットをピックアップし、この方法は、使用してSQLに標準化された形式を送信しています

0

あなたは推測できる程度には限界がありますが、日付の書式については何らかの推測をすることができます。

canonical日付ussually ISO互換ですので、yyyy-mm-dd - 2017-31-01のようなものは見たことがありません。

問題は、11-11-2011、またはさらに悪化すると10/11/12のような問題が発生した場合です。追加情報がない場合は、それを理解する方法はありません。

+0

ちょっと下のコメントは問題を解決しましたが、今ではほとんどの形式を受け入れています.... 私は2日間、すべての種類のファンキーなフォーマットを受け入れるようにしました。 –

関連する問題