1

SQL Server 2005と、タイプが2列のテーブルがありますdatetime

私の質問は:

select 
    DocDate, 
    CONVERT(nvarchar, DocDate, 126), 
    _stamp, 
    CONVERT(nvarchar, _stamp, 126) 
from 
    dochead 
where 
    id = 4493130

結果は次のとおりです。

DocDate                   (no column name)      _stamp                    (no column name)
2011-08-31 00:00:00.000   2011-08-31T00:00:00   2011-08-31 16:01:17.243   2011-08-31T16:01:17.243

ご覧のとおり、2番目の列にはミリ秒がありません。なんで?

4

3 に答える 3

4

ミリ秒の部分はまったくありません.000。手動で追加できます。

select 
    DocDate, 
    left(CONVERT(nvarchar, DocDate, 126) + '.000', 23)
    _stamp, 
    left(CONVERT(nvarchar, _stamp, 126) + '.000', 23)
from 
    dochead 
where 
    id = 4493130

実例:http ://sqlfiddle.com/#!3 / d41d8 / 955

于 2012-05-10T10:31:13.413 に答える
2

これは有効なISO8601日時表現であり、この形式126で得られると言われていることはすべてです。ウィキペディアを引用するのは嫌いですが、:

  • 精度を下げるために、[5]日付と時刻の表現から任意の数の値を削除できますが、重要度の低いものから高いものの順になります。たとえば、「2004-05」は有効なISO 8601の日付であり、2004年5月(5か月目)を示します。この形式は、2004年の不特定の月の5日を表すことも、 2004年から2005年。

  • 特定のアプリケーションで必要な場合、標準では、表現の最小時間値への小数の加算がサポートされています。

したがって、1秒の小数部(ミリ秒など)は、この形式のオプション部分です。

于 2012-05-10T10:45:39.677 に答える
0

これを試して

select 
DocDate, 
CONVERT(nvarchar, DocDate, 126), _stamp, 
CONVERT(nvarchar, _stamp, 126) 
from  dochead where 
id = 4493130
于 2012-05-10T09:50:17.737 に答える