在sql server 中一个datetime型的字段,长度是8.为什么它能存进去一个长度大于8的时间.难道此类型的数据能自动扩充.
如下所示:字段名:fdteAppDate,值为:2008-08-05 14:57:17.873
第二个疑点:相对上示所例的时间,我用查询分析器查询出来的时间为2008-08-05 14:57:17.873,可是我用它的企业管理器.查询出来的却是2008-08-05 14:57:18.
我在程序里用select来调用时,查询出来的是2008-08-05 14:57:17.873.我要的结果是要2008-08-05 14:57:18,
请问谁知道应该怎么样来做?
另外我用convert(varchar(20),fdteAppDate,120)查询出来是2008-08-05 14:57:17.
第一次用sql server.

解决方案 »

  1.   

    1:8是字節數
    2:精度問題
    3:select convert(varchar(20),getdate(),120)
      

  2.   

    1、datetime是个单独的数据类型,长度是8字节,不是8个字符,内部是用数字表示日期和时间的
    2、日期时间可以转换成字符串类型,比如要2008-08-05 14:57:18用:select convert(varchar(19),字段名,120) as 字段名 from 表名
      

  3.   


    1)datetime是个单独的数据类型,长度是8字节,不是8个字符。
    2)CONVERT格式:
    CONVERT(data_type,expression[,style])说明:
    (datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到的函数的3个参数,
    第1个参数为,转换后的大小,第2个为转换日期的字段或函数,第3个为转换的格式,具体如下: 
    0 | 0 or 100 | mon dd yyyy hh:miAM(或PM) 
    1 | 101 | mm/dd/yy 
    2 | 102 | yy-mm-dd 
    3 | 103 | dd/mm/yy 
    4 | 104 | dd-mm-yy 
    5 | 105 | dd-mm-yy 
    6 | 106 | dd mon yy 
    7 | 107 | mon dd,yy 
    8 | 108 | hh:mm:ss 
    9 | 9 or 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM) 
    10 | 110 | mm-dd-yy 
    11 | 111 | yy/mm/dd 
    12 | 112 | yymmdd 
    11| 13 or 113 | dd mon yyyy hh:mi:ss:mmm(24小时制) 
    14 | 114 | hh:mi:ss:mmm(24小时制) 
    15 | 20 or 120 | yyyy-mm-dd hh:mi:ss(24小时制) 
    16 | 21 or 121 | yyyy-mm-dd hh:mi:ss:mmm(24小时制) 
    具体例子: 
    SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM 
    SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06 
    SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16 
    SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06 
    SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06 
    SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06 
    SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06 
    SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 06 
    SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46 
    SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM 
    SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06 
    SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16 
    SELECT CONVERT(varchar(100), GETDATE(), 12): 060516 
    SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937 
    SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967 
    SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47 
    SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157 
    SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM 
    SELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16 
    SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47 
    SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250 
    SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM 
    SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006 
    SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16 
    SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006 
    SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006 
    SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006 
    SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006 
    SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006 
    SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49 
    SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM 
    SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006 
    SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16 
    SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516 
    SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513 
    SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547 
    SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49 
    SELECT CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700 
    SELECT CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827 
    SELECT CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM 
    SELECT CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
      

  4.   

    谢谢各位,我用
    select convert(varchar(19),fdteAppDate,120) from jkz_webapply
    查出来的值是:2008-08-05 14:57:17
    而不是2008-08-05 14:57:18.我要得到2008-08-05 14:57:18
      

  5.   

    原始数据是2008-08-05 14:57:17.873,我是把数据从sql server往oracle里导.导入的日期应当为2008-08-05 14:57:18才是正确的.我们一般不可能给用户显示一个2008-08-05 14:57:17.873这样的时间吧.
    用convert得到的却是17秒,我不知道是因为没有没四舍五入还是其它原因造成的.
      

  6.   

    select left('2008-08-05 14:57:17.873',17)+cast(cast(round(right('2008-08-05 14:57:17.873',len('2008-08-05 14:57:17.873')-17),0)as int)as varchar(3))
      

  7.   


    select 
    convert(varchar(50),dateadd(s,1,fdteAppDate),120) 
    from jkz_webapply 
    --总是加一秒
      

  8.   

    datetime是个单独的数据类型,长度是8字节,不是8个字符,内部是用数字表示日期和时间的 
    可以的