この移植性の問題は、リテラルに適用されます。
SQL ServerがANSIリテラルDATEキーワードをサポートせず、すべてのCAST、CONVERT、TO_DATE、および日付関数がすべてのプラットフォームで同一ではないため、これを行うためのポータブルな方法はないと思います。
2番目のクエリはSelect * from MyTable where myDate > '20130410'
と書くこともできます。
SQL ServerでANSI DATEリテラル機能(DB/2とTeradataの両方にこれがあります)がサポートされていればいいと思います。
SQL ServerがANSI DATE、TIME、およびTIMESTAMPのリテラルキーワードをサポートしていない理由について、これで接続項目を見つけることができませんでした。
代わりにパラメータを使用することができるかどうか、私はあなたのシナリオで疑問に思いますか?
JackのコメントCommon SQL to compare dates in SQL Server and ORACLEの解は、このコードを移植性のあるものにしますが、移植性のないスカラ関数が必要です。 SQL Serverでは、スカラー関数にそのスキーマを接頭辞する必要があることに注意してください。これは、スキーマを同じ名前にすることができない場合、OracleコードとSQLコードの間にもう一つのしわを導入する可能性があります(Oracleでは、パッケージ内に関数を置くと、接頭辞はスキーマではなくパッケージの名前になります)
@Aaron Bertrand上記はOracle上で動作しません。それは無効な月を言っている間違いです。 – CathalMF
@CathalMF [編集者のNLS設定に依存](http://www.sqlfiddle.com/#!4/d41d8/9820)(Ed。 –
@JackDouglas - あなたは正しいです。私はその点を強調した。私は "乱雑"または "危険な"と言って、それを残しておくべきでした。コメントを編集します。 –