私は毎月更新する必要がある(また変更する年も必要です)テーブルに日付があります。たとえば、May2015
という形式です。更新ステートメントで自動的に更新できる方法はありますか?通常これは難しいことではありませんが、月と年が分割されていないので難しいです。カラムsqlの日付を更新
ありがとうございました。
私は毎月更新する必要がある(また変更する年も必要です)テーブルに日付があります。たとえば、May2015
という形式です。更新ステートメントで自動的に更新できる方法はありますか?通常これは難しいことではありませんが、月と年が分割されていないので難しいです。カラムsqlの日付を更新
ありがとうございました。
遅すぎる場合は、文字列の代わりにDATEまたはDATETIMEを使用するようにスキーマを変更する必要があります。遅すぎる場合は、DBの各行を照会し、日付解析ライブラリを使用してDATEまたはDATETIMEに解析し、その行のDATEまたはDATETIMEの新しい列を更新する移行を作成する必要があります。
テーブルを変更できないと仮定すると、毎月の最初の日付をDATETIME
形式にすることができます。そして、あなたはあなたが必要とするものに更新するために、この同じロジックを使用することができます
IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL DROP TABLE #tempTable
create table #tempTable(
vDate varchar(50)
)
insert into #tempTable (vDate) values
('May2015'),
('March2016'),
('August2014')
select
cast(
case
when left(vDate,len(vDate) - 4) = 'January' then '01'
when left(vDate,len(vDate) - 4) = 'February' then '02'
when left(vDate,len(vDate) - 4) = 'March' then '03'
when left(vDate,len(vDate) - 4) = 'April' then '04'
when left(vDate,len(vDate) - 4) = 'May' then '05'
when left(vDate,len(vDate) - 4) = 'June' then '06'
when left(vDate,len(vDate) - 4) = 'July' then '07'
when left(vDate,len(vDate) - 4) = 'August' then '08'
when left(vDate,len(vDate) - 4) = 'September' then '09'
when left(vDate,len(vDate) - 4) = 'October' then '10'
when left(vDate,len(vDate) - 4) = 'November' then '11'
when left(vDate,len(vDate) - 4) = 'December' then '12'
end + '/01/' + right(vDate,4) as date)
from
#tempTable
:ここではどのように例があります。
これは、currentdate関数を使用して文字列を調整しようとしている古いAccess DBです。私はUPDATE "fieldname"を使用したいと思っていますが、それはスペルアウトされた月に残っている必要があります。これまでのベストプラクティスはそれほどわかりませんが、私が手に入れたものです。
答えとしてではなく、これをあなたの質問にコメントとして追加してください。そうすれば、他の人に通知が表示されます。私はまたあなたのデータベースだと言ったのであなたの質問にアクセスしてタグ付けしました。うまくいけば誰かが助けることができます! – scsimon
どのDBMSを使用していますか? –
これは、日付を 'VARCHAR'として保存しないようにする理由です。 – Siyual
@Siyualによれば、すべてのRDBMSには、ネイティブのDate型またはDateTime型のサポートがあります。それらを使用する、彼らは理由のためにそこにいる。さもなければ、すべてが文字列として永続化されている場合でも、型システムを持っているという点は何ですか? – Igor