2012-04-19 23 views
2

「2012- 12-01 12:33:00.0」を「2012- 01-12 12:33:00.0」にするにはどうすればよいですか?私は "select convert(varchar(50)、convert(datetime、log_date、103)、121)"を試していましたが、101と103の両方を使用しています。datetimeで月と日を反転させる方法は?

データベースはMS SQL

+1

はでこれをしないでください SQL。 DateTimeを表示する必要があるときにアプリケーションで行います。 – Oded

+0

いいえ、できません。その理由は、データが誤って入力されたためです。だから私はデータを修正する必要があります。その他の日付フィールドは正しい形式です。したがって、私はこの分野のためだけにアプリを変更することはできません。データを修正する必要があります。 – cooldude

+0

どういう意味ですか?日付は正しいですか? DateTime値**には、**の形式はありません。これはSSMSがあなたに表示する方法です。 – Oded

答えて

2
DECLARE @date DATETIME 
SET DATEFORMAT ydm 
SET @date = '2012-12-01 12:33:00.0' 
SELECT @date 

SET DATEFORMAT ydmは、あなたの必要な形式で結果を与えるです。

その他のオプション

UPDATE Table_Name 
SET COLUMN_NAME= convert(varchar(20), convert(Date, @date, 101)) + convert(varchar(30),convert(time, @date)) 
WHERE 

OR

select convert(datetime, convert(varchar(100), @date), 20) 
+0

ありがとうHayerさん、どうすればUPDATEステートメントの一部として使用できますか?更新が必要なレコードがたくさんあります。 – cooldude

+0

私は最も簡単なアプローチは正しい形式を返す関数を書くことだと思います。しかし、クエリの実行時間が遅くなります。これを行うには適切な方法が必要です。 googleを試してみてください。 – Scorpion

+0

@cooldude更新されたクエリを確認してください – Scorpion

0

あなただけのいくつかの文字列操作(注:未テストコード)を行うことができ

UPDATE table 
SET date= 
    LEFT(CONVERT(VARCHAR(50),date,128),4) -- '2012' 
    +SUBSTRING(CONVERT(VARCHAR(50),date,128),7,3) -- '-01' 
    +SUBSTRING(CONVERT(VARCHAR(50),date,128),4,3) -- '-12' 
    +RIGHT(CONVERT(VARCHAR(50),date,128),LEN(CONVERT(VARCHAR(50),date,128))-10) -- ' 12:33:00.0' 
関連する問題