形式が文字列でtable_a
ある列を持つテーブルがあります。field_b
その分野では、それらは例えば書かれています01/06/2012
。
に変更する必要があります2012-06-01
フィールドタイプなどは変更できません。
SELECT CONVERT(DATE,CONVERT(DATEtime,'01/06/2012',103))
その他の例については、ここをクリックしてください
select cast(cast('01/06/2012' as DATE) as varchar(10))
ほとんどのSQLエンジンにはsubstring()関数があります。これをconcat()と一緒に使用して、新しい文字列を作成します。
(擬似コード)
update table_a set field_b=concat(substring(field_b, 6, 4), '-', substring(field_b, 3, 2), '-', substring(field_b, 0, 2))
詳細については、SQLサーバーのマニュアルを参照してください。
select convert(datetime,'01/06/2012',103)
update [YourDB].[dbo].[YourTable]
set [YourColumn] = convert(nvarchar(10), convert(datetime,[YourColumn]), 126)
これは機能し、ローカリゼーションの問題を回避する答えです。
select cast(cast(convert(DATETIME, '01/06/2012', 103) as DATE) as NVARCHAR(10))
103をフォーマットとして使用し、それを日付に変換して(時間を切り捨てるために)、次にvarcharに変換する必要があります。