0

次の形式の値を持つ VARCHAR() 列を持つテーブルがあります。

2012-10-05T11:14:00-04:00

このデータを、フィールドのデータ型が DATETIME である別のテーブルに入れる必要があります。

変換するにはどうすればよいですか

2012-10-05T11:14:00-04:00

2012-10-05 11:14:00

?

私は試した:

CAST(LEFT(REPLACE(fieldtimestamp, 'T', ' '), 19) AS DATETIME)

しかし、それは私にエラーを与え続けます:

文字列から日時を変換する際に変換に失敗しました。

4

4 に答える 4

7

これは次のようになります。 SELECT CONVERT(DATETIME,LEFT(fieldtimestamp,19),126)

を交換する必要はありません'T'

于 2013-01-30T18:48:58.150 に答える
2
select CAST(LEFT(REPLACE('2012-10-05T11:14:00-04:00', 'T', ' '), 19) AS DATETIME)

私のために働く

2012-10-05 11:14:00.000

SQLサーバー2012の下で

于 2013-01-30T18:50:07.560 に答える
0

SELECT thedate, CAST( LEFT( REPLACE( thedate, 'T', ' ' ) , 21 ) AS DATETIME ) FROM MyTbl1

秒が必要な場合は、21文字を取る必要があります。

thedate                     DATETIME
2012-10-05T11:14:00-04:00   2012-10-05 11:14:00
2012-10-05T11:14:00-05:00   2012-10-05 11:14:00

mysqlでうまくいきました

于 2013-01-30T19:46:43.620 に答える
0

MS SQL Server 2008 を使用している場合は、DATETIME の代わりに DATETIMEOFFSET を使用できます。

BEGIN
DECLARE @d DATETIMEOFFSET
SELECT @d = '2012-10-05 11:14:00-04:00'
END
于 2013-01-30T18:59:24.490 に答える