4

編集:解決策は参照投稿の解決策にあります。私は不注意にDATETIME-> Varchar(10)を見落としていました

`CONVERTの構文:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )`

私はこの投稿を知っています

SQL Server(2005、2000、7.0)には、任意に構造化された日時を文字列形式で取得し、それを日時データ型に変換するための柔軟な方法や柔軟性のない方法はありません。

したがって、この特定の文字列形式のみを解決するソリューションを探しています。

inputDateSQL Serverにフィールド:のdatetime形式のテーブルがあるとしましょう

次のコードは、変換/キャストなしで機能します

SELECT inputDate
FROM   some_table
WHERE  inputDate > '01/24/2013' 

しかし、それは

SELECT inputDate
FROM   some_table
WHERE  inputDate > '24/01/2013'

投げるThe conversion of a varchar data type to a datetime data type resulted in an out-of-range value

それから私は試しました

SELECT inputDate
FROM   some_table
WHERE  inputDate > CONVERT(VARCHAR(10), '24/01/2013', 103)

同じエラーを投げる

SQLSERVERで日時形式として認識されるようにdd/mm / yyyyの文字列を変換する方法はありますか?または唯一の方法、そして適切な方法は他の場所でサンティゼーションを行うことですか?

4

4 に答える 4

8

DATETIME代わりに使ってみましたかVARCHAR(10)

WHERE inputDate > CONVERT(DATETIME, '24/01/2013', 103) 
于 2013-01-24T03:06:16.780 に答える
0

この投稿の情報を使用してみてください:ISO 8601

私は次のことを行うことに成功しました:

select convert(datetime,convert(char(23),'20140125' ,127),103) as MyDate

これを取得するには:2014-01-25 00:00:00.000

于 2014-01-05T09:21:05.423 に答える
-1

ISO 8601日付形式YYYY-MM-DDT00:00:00を使用します。どのロケールでも暗黙的に日時に変換されます

于 2013-01-24T03:06:24.083 に答える
-2

次のように、VARCHAR(10)の長さをVARCHAR(14)に増やしてみてください。

select inputDate from Table 
where inputDate > convert(varchar(14), '24/01/2013', 103)
于 2013-01-24T03:13:40.403 に答える