-2

クエリに少し問題があります。ローカル開発サーバーのデータベースはフランス語の日付形式(dd/mm/yyyy)で実行されていますが、リリースサーバーは北米形式(mm/dd/yyyy)で実行されています。

したがって、これはエラーをスローします

SELECT CodPeriodoInsc, 
       CONVERT(VARCHAR, FechaDesde, 103) AS FechaDesde, 
       CONVERT(VARCHAR, FechaHasta, 103) AS FechaHasta 
FROM SedesPeriodosInscripcion
WHERE FechaDesde <= '25/06/2012'

しかし、それは開発で機能し、これはリリースで機能します

SELECT CodPeriodoInsc,
       CONVERT(VARCHAR, FechaDesde, 103) AS FechaDesde, 
       CONVERT(VARCHAR, FechaHasta, 103) AS FechaHasta 
FROM SedesPeriodosInscripcion
WHERE FechaDesde <= '06/25/2012'

しかし、それは開発では機能しません。

両方のデータベースでクエリを機能させる方法はありますか?

4

2 に答える 2

5

渡した場合05/06/2012、コードはそれが5月6日を意味するのか6月5日を意味するのかをどのように知ることになっていますか?できません。

解決策は、そもそもこれらの形式での日付の受け渡し/保存を停止することです。20120605地域の設定、照合、言語、日付形式の設定などに関係なく、すべてのサーバーで6月5日を渡すと...

したがって、常に次のように言う必要があります。

WHERE FechaDesde <= '20120625'
于 2012-06-25T20:10:47.720 に答える
3

フォーマットを選択して、 SETDATEFORMATを使用できます

ただし、日付リテラルの標準形式は、yyyyMMddのようにいつでも選択できます。これは、あなたの場合は「20120625」になります。これらは(人間の場合でも)あいまいになることはありません。

または、SQL Server 2012を使用している場合は、 ISO形式を使用するか、DATETIMEFROMPARTSを使用して日付を作成します。

于 2012-06-25T20:17:30.853 に答える