请教大家我使用datatime型数据,但是插入日期后,用select 查询出来的总是:2010-12-09 00:00:00.000请教有什么方法可以不要后面的时间吗,只需要日期部分.只能使用convert函数吗.这样的话,比较麻烦,特别是我要查询列较多的整张表时.如果不去掉后面的时间,是不是输出到其他的软件里面也是这样2010-12-09 00:00:00.000的字符串?

解决方案 »

  1.   

    日期存进去就是精确到毫秒,除非用varchar 存放,插入时候用convert 转换
      

  2.   

    按你的需求,你应该用DATE类型
    DECLARE @D1 DATETIME,@D2 DATE
    SELECT @D1=GETDATE(),@D2=GETDATE()
    SELECT @D1 AS [DATETIME],@D2 AS [DATE]
    /*
    DATETIME                DATE
    ----------------------- ----------
    2011-01-04 16:57:37.537 2011-01-04
    */
      

  3.   

    另外,数据库内存储的并不是你看到的格式,而是一个8位的16进制数,你看到的带000的格式只是客户端生成的。在程序里,用DATE类型接收时格式化一下也没问题。
      

  4.   

    你好,再请问一下,DATE,sql2005中没有这个类型啊.
      

  5.   

    DATE类型是SQL SERVER 2008新加的类型:
    DATE你是否曾经想只存储日期而没有时间?如果是的话,使用旧的日期数据类型将无法完成。现在在SQL Server 2008中你可以使用DATE数据类型,DATE数据类型允许只存储一个日期值,它支持的日期范围从0001-01-01到9999-12-31,存储 DATE数据类型磁盘开销只需3个字节,如果你只需要存储日期值而没有时间,使用DATE可以比SMALLDATETIME节省一字节的磁盘空间。这里用一个示例来展示如何显示DATE的值SET NOCOUNT ON;
    DECLARE @D DATE = '2001-03-1';
    PRINT @D;
    SELECT CONVERT(char(10),@D,120) DATEONLY, @D [DATE-N-TIME];运行上述代码将会得到如下结果2001-03-01
    DATEONLY   DATE-N-TIME
    ---------- -----------------------
    2001-03-01 2001-03-01 00:00:00.000
    这里你可以看到PRINT语句显示日期使用YYYY-MM-DD格式,但是SELECT语句要求你使用CONVERT函数把DATE变量转换为YYYY- MM-DD格式,正如你所看到的,如果你使用SELECT只显示一个DATE变量,最后的输出结果仍然包含时间部分,这个功能在所有新的日期和时间数据类型中是一致的。
      

  6.   

    Datetime和SmallDatetime类型的内部存储 时间类型在存储时候被分成2日期和时间2独立部分. 日期部分存储的是和1900-01-01的天数差,时间部分存储,如果是Datetime,午夜0点后时钟周期数,一个时钟周期数为1/300秒,即3.33毫秒.如果是smalldatetime,时间部分存储的是午夜0点以后的分钟数. 我们只要将时间转换成16进制就可以很清楚的看到了。接下来演示一下:declare @day1 datetime
    set @day1=current_timestamp
     
    --datetime
    select @day1,--2010-03-07 17:29:49.637
    CONVERT(varbinary(8),@day1),-- 0x00009D32012057FB
    CONVERT(int,SUBSTRING(CONVERT(varbinary(8),@day1),1,4)),--40242
    CONVERT(int,SUBSTRING(CONVERT(varbinary(8),@day1),5,4))--18876708*3.33/1000/60/60 =17.46
      

  7.   

    只能使用convert函数.select convert(varchar(10),dt,120) from tb有关convert的使用方法见下:
    不带世纪数位 (yy) 带世纪数位 (yyyy) 
    标准 
    输入/输出** 
    - 0 或 100 (*)  默认值 mon dd yyyy hh:miAM(或 PM) 
    1 101 美国 mm/dd/yyyy 
    2 102 ANSI 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 或 109 (*)  默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM) 
    10 110 美国 mm-dd-yy 
    11 111 日本 yy/mm/dd 
    12 112 ISO yymmdd 
    - 13 或 113 (*)  欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h) 
    14 114 - hh:mi:ss:mmm(24h) 
    - 20 或 120 (*)  ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff] 
    - 21 或 121 (*)  ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff] 
    - 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格) 
    - 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM 
    - 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM