"022417"のような値を持つデータベーステーブル列があり、そのすべてを "02-24-2017"に変更するクエリを作成したい場合、そのクエリの外観好き? (?)SQL文字列形式を更新
私の最初の試みは、ワイルドカードを使用しようとした構文:
UPDATE b5_adproduct
SET ad_date = replace(ad_date, '______', '__-__-20__');
が、それは失敗しました。
"022417"のような値を持つデータベーステーブル列があり、そのすべてを "02-24-2017"に変更するクエリを作成したい場合、そのクエリの外観好き? (?)SQL文字列形式を更新
私の最初の試みは、ワイルドカードを使用しようとした構文:
UPDATE b5_adproduct
SET ad_date = replace(ad_date, '______', '__-__-20__');
が、それは失敗しました。
あなたが、これはそれらのすべてのために働く必要がありますので、あなたの記録が唯一、昨年からまたがることをコメントで述べた:
UPDATE `b5_adproduct` SET `ad_date` = CONCAT(SUBSTRING(`ad_date`, 1, 2), '-', SUBSTRING(`ad_date`, 3, 2), '-20', SUBSTRING(`ad_date`, 5, 2))
また、フィールドは、念のために、以上の6つの文字を受け入れ、その前に確認してください文字列が長くなるため
また、フィールドを日付フィールドに切り替える予定の場合、日付はYYYY-MM-DDのようになりますので、次のように使用してください:
UPDATE `b5_adproduct` SET `ad_date` = CONCAT('20', SUBSTRING(`ad_date`, 5, 2), '-', SUBSTRING(`ad_date`, 1, 2), '-', SUBSTRING(`ad_date`, 3, 2))
format()
とsubstr()
を使用できます。
update b5_adproduct
set ad_date = format(
'%s-%s-20%s',
substr(ad_date, 1, 2),
substr(ad_date, 3, 2),
substr(ad_date, 5, 2))
returning *
id | ad_date
----+------------
1 | 02-24-2017
(1 row)
値を同時に変換する列の種類を変更することもできます。
alter table b5_adproduct
alter ad_date type date
using make_date(
substr(ad_date, 5, 2)::int+ 2000,
substr(ad_date, 1, 2)::int,
substr(ad_date, 3, 2)::int)
-- make_date(yyyy, mm, dd)
もう1つの方法は、日付形式に変換することです。 MySQLを使用する場合には、次のようになります。
STR_TO_DATE()
はこれまでに、あなたの文字列を変換し、表示する日付の書式を指定する
DATE_FORMAT()
を使用
UPDATE `b5_adproduct`
SET `ad_date` = DATE_FORMAT(STR_TO_DATE(`ad_date`, '%m%d%y'), '%m-%d-%Y');
。
あなたがこれまでにあなたの文字列を変換するためにto_date()
を使用することができますPostgreSQLのを使用している場合:
to_date('022417', 'MMDDYY')
仕様:https://www.postgresql.org/docs/9.2/static/functions-formatting.html
は、この(上記の答えとは少し違うような何かを行うことができます - ちょうど宣言された変数を独自のテーブル値に置き換えます)
Declare @date nvarchar(10)
Set @date = '122417'
**select @date, substring(@date,1,2) + '-' + substring(@date,3,2) + '-20' + substring(@date,5,2)**
go
返品:
122417 12-24-2017
を選択して、選択された日付を部分文字列...に置き換え、構文を更新文に変換するだけです –
日付のデータを変更する場合は、実際のDATEデータ型に変更しないでください。 – Siyual
だから、もしあなたが "022487"を持っていたら、これから何年になるのですか? 1987年、2087 ... – RIKI
実際にDjango CharFieldをDateFieldに移行しましたが、まずdb内の既存の値をすべて受け入れ可能な形式に変更する必要があります。 – kjarsenal