0

基本的にテーブルからすべてのレコードを返すだけのビューがあり、ISO 形式の日付であるはずの列「isodate」を追加します。

CREATE VIEW [dbo].[v_bedarfe]
AS 
   SELECT *,convert(varchar(16),datum,20) As isodat FROM bedarfe
GO

「datum」フィールドは smalldatetime です。isodat のクエリの結果は...「驚くべき」ものだったので、ポイントを明確にするために、次のことを試しました。

select top 10 datum,isodat,convert(varchar(16),datum,20) As isodat2 from v_bedarfe

その結果:

クエリの結果のスクリーンショット

それは非常に間違っているように見えます。

したがって、私は間違った期待を持っているか、ここで何かを「悪用」していると思いますが、何が間違っているのかわかりません。ここで軌道に乗る方法を提案していただければ幸いです...

ありがとう

Michael
(これを投稿するときにスクリーンショットが正しく表示されることを願っています。プレビューでは表示されません)

4

2 に答える 2

1

ビューでの使用*は危険です。テーブル定義が変更された場合*、ビューが列を間違ってマップする可能性があります。を削除してビューを再作成し*、問題が解決するかどうかを確認します。

PS Convert 20 は、実際には ODBC 標準です。MSDN ページyyyy-mm-dd hh:mi:ss(24h)を参照してください。

于 2009-12-28T12:01:28.857 に答える
0

convert の最後のパラメーターは出力形式です。

20 => yyyy-mm-dd hh:mi:ss(24h)

131 => dd/mm/yy hh:mi:ss:mmmAM

MS SQL convert()を参照してください

于 2009-12-28T12:03:43.890 に答える