在sqlserver中存储日期,只能存成datetime格式,如果只存日期,它会在后面加上讨厌的00:00:00,,请问怎么样才能避免这种情况? ,请帮忙想个办法在存储的时候不存储那个00:00:00。

解决方案 »

  1.   

    datetime 是日期时间型的,存在表里的时候是无法弃掉,不过在取出的时候可以做处理,convert(char(10),'字段名',121) 取出的格式如:yyyy-mm-dd
      

  2.   

    convert(char(12),'字段名',121) 
      

  3.   


    select convert(varchar(10),getdate(),120)
      

  4.   

    convert(varchar(),getdate,120)
    有N种日期格式供你选择,总有一种适合你~
    具体例子:
    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
      

  5.   

    可以考虑存为字符串,字符串和日期转换还是比较容易的,但是要注意默认语言。
    或者用上面提到的方法。
    如果要存为字符串,请格外注意如下两个例子:
    select datediff(dd,'2008-06-01','2008-07-02')/*----------- 
    31(所影响的行数为 1 行)
    */
    select datediff(dd,2008-06-01,2008-07-02)
    /*
    ----------- 
    -2(所影响的行数为 1 行)
    */
    后者没有单引号,2008-06-01=2001,2008-07-02=1999,
    实际上是用离1900-01-01那天1999天的日期减去离1900-01-01那天2001天的日期,所以结果为-2。
      

  6.   

    可以考虑存为字符串,字符串和日期转换还是比较容易的select datediff(dd,2008-06-01,2008-07-02)select datediff(dd,1900-01-01,2008-07-02)select datediff(dd,1900-01-01,2008-06-01)----------- 
    -2(所影响的行数为 1 行)            
    ----------- 
    101(所影响的行数为 1 行)            
    ----------- 
    103(所影响的行数为 1 行)