2016-04-26 8 views
1

starttime列の時刻でcustomdate1列を更新する必要があります。私が持っている問題はフォーマットです。 starttimeの現在の書式はHH:MM:SS.SSSSSSSです.HH:MMにする必要があります。Sqlの更新時の列

enter image description here

ブライアン

+2

。データを一貫して保存します。フロントエンドにHH:MMだけが必要な場合は、そのフォーマットをフロントエンドに置く必要があります。 –

+0

また、選択クエリに書式設定関数を追加することもできます。 4つのカスタムフィールドを削除することをお勧めします。 –

答えて

0

私は、あなたが最初に自分のデータ型を変更して、「あなたはドン場合は、更新

ALTER TABLE TableName 
ALTER COLUMN CustomDate1 time(0) not null 


UPDATE tablename 
SET customdate1 = (SELECT starttime) 
        FROM tablename); 

を行うことを示唆しています秒を保存して、データ型をchar(5)に変更してから更新を実行できます。しかし、これはお勧めしません。それは希望のフォーマットとしてDATETIME型の列を選択することは不可能ですが、あなた

DECLARE @time char(5) = '12:15'; 
SELECT @time AS '@time' 
+0

時間はHHとして表示秒を取り除くことはできませんmentionnedとして推奨されていないので、時間列の最小サイズは8文字であることを追加する必要があります:MM :SS、私はHH:MMが必要です。 – Brian

+0

@Brianなぜあなたは秒を気にしますか?アプリケーションレベルでは、アプリケーションレベルなしでフォーマットすることができます。 – Dejan

+0

MS Visual Studioでキューブのディメンションを作成しようとしています。私はそれに時間の尺度を添付するたびにエラーが発生します...バックエンドデータベースアクセスモジュールのエラー。バインディングに指定されたサイズが小さすぎるため、1つ以上の列値が切り捨てられます。 – Brian

0
UPDATE tablename 
SET customdate1 = (SELECT SUBSTRING(CONVERT(varchar, starttime, 108), 1, 5) 
        FROM tablename); 

ありがとう1の上に試してみてください。日付は5文字に切り捨てられます。 hh:mm

+0

これは、値のデフォルトの「外観」を変更しませんが、分後に値をすべて00にするように値を更新します。 –

+0

メッセージ512、レベル16、状態1、行1 サブクエリが2つ以上の値を返しました。サブクエリが=、!=、<, <= , >、> =、またはサブクエリが式として使用されているときは、これは許可されません。 ステートメントが終了しました。 – Brian

+1

[蹴り癖が悪い](長さなしのVARCHARの宣言)(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length 。ASPX) - あなたは**常に**あなたが –

0

日付は、列が作成された形式で保存されます。日付時刻

日付をテーブルから日付を取得するときに必要な形式に変換する必要があります。 CONVERT(CHAR(5), customdate1, 108)

0

使用しているデータ型は?それは時間である場合は、時間に列のデータ型を設定することにより、fractionnal秒の精度を変更することができます(0)

+0

STARTTIMEを使用するすべての 'varchar'変数やパラメータのための長さを提供しなければならない時間(7)とcustomdate1であるあなたは、時間にSTARTTIMEデータ型を変更することはできません場合は日時 – Brian

+0

です(0 )に変換使用してみてください(varchar型は、のStartTimeは、8) –

+0

私はcustomdate1時間に設定しまった(0)、まだHHとして表示:MM:SS – Brian

0

ALTER TABLE TableName 
ALTER COLUMN CustomDate1 char(5) not null 


UPDATE tablename 
SET customdate1 = (SELECT starttime) 
        FROM tablename); 

は、簡単な例を参照してください:任意の書式は、例を参照してくださいアプリケーションレベルで

を行うべきです列を選択したVIEWと、HH:MM形式の別の列を作成できます。

ですから、このようなVIEW何かの選択リストに使用することができます:DateTimeデータ型の書式を持っていない

SELECT StartTime, EndTime, ..., CONVERT(VARCHAR(5), GETDATE(), 108) AS CustomDate1_Formatted