(case when CONVERT(varchar(12),nsrq,111) is null then '' when CONVERT(varchar(12),nsrq,111)='1900/01/01' then ''  else CONVERT(varchar(12),nsrq,111) end)这条SQL语句输出的时间格式是:YYYY/MM/DD,怎么样能变成输出:YYYY-MM-DD,请大家帮帮我吧!谢谢!还有,这条SQL语句里面的111是什么意思?

解决方案 »

  1.   

    两种办法
    1、SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS [YYYY-MM-DD] --直接使用120格式
    2、SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 111), '/', '-') AS [YYYY-MM-DD]  --做个替换111就是日期格式的代码,在sql帮助里面可以查到
      

  2.   

    111就是日期格式的代码,一般使用还有如下等格式Mon DD YYYY 1
    HH:MIAM (or PM)  Default  SELECT CONVERT(VARCHAR(20), GETDATE(), 100)  Jan 1 2005 1:29PM 1
    MM/DD/YY  USA  SELECT CONVERT(VARCHAR(8), GETDATE(), 1) AS [MM/DD/YY]  11/23/98
    MM/DD/YYYY  USA  SELECT CONVERT(VARCHAR(10), GETDATE(), 101) AS [MM/DD/YYYY]  11/23/1998
    YY.MM.DD  ANSI  SELECT CONVERT(VARCHAR(8), GETDATE(), 2) AS [YY.MM.DD]  72.01.01
    YYYY.MM.DD  ANSI  SELECT CONVERT(VARCHAR(10), GETDATE(), 102) AS [YYYY.MM.DD]  1972.01.01
    DD/MM/YY  British/French  SELECT CONVERT(VARCHAR(8), GETDATE(), 3) AS [DD/MM/YY]  19/02/72
    DD/MM/YYYY  British/French  SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS [DD/MM/YYYY]  19/02/1972
    DD.MM.YY  German  SELECT CONVERT(VARCHAR(8), GETDATE(), 4) AS [DD.MM.YY]  25.12.05
    DD.MM.YYYY  German  SELECT CONVERT(VARCHAR(10), GETDATE(), 104) AS [DD.MM.YYYY]  25.12.2005
    DD-MM-YY  Italian  SELECT CONVERT(VARCHAR(8), GETDATE(), 5) AS [DD-MM-YY]  24-01-98
    DD-MM-YYYY  Italian  SELECT CONVERT(VARCHAR(10), GETDATE(), 105) AS [DD-MM-YYYY]  24-01-1998
    DD Mon YY 1  -  SELECT CONVERT(VARCHAR(9), GETDATE(), 6) AS [DD MON YY]  04 Jul 06 1
    DD Mon YYYY 1  -  SELECT CONVERT(VARCHAR(11), GETDATE(), 106) AS [DD MON YYYY]  04 Jul 2006 1
    Mon DD, YY 1  -  SELECT CONVERT(VARCHAR(10), GETDATE(), 7) AS [Mon DD, YY]  Jan 24, 98 1
    Mon DD, YYYY 1  -  SELECT CONVERT(VARCHAR(12), GETDATE(), 107) AS [Mon DD, YYYY]  Jan 24, 1998 1
    HH:MM:SS  -  SELECT CONVERT(VARCHAR(8), GETDATE(), 108)  03:24:53
    Mon DD YYYY HH:MI:SS:MMMAM (or PM) 1  Default +
    milliseconds  SELECT CONVERT(VARCHAR(26), GETDATE(), 109)  Apr 28 2006 12:32:29:253PM 1
    MM-DD-YY  USA  SELECT CONVERT(VARCHAR(8), GETDATE(), 10) AS [MM-DD-YY]  01-01-06
    MM-DD-YYYY  USA  SELECT CONVERT(VARCHAR(10), GETDATE(), 110) AS [MM-DD-YYYY]  01-01-2006
    YY/MM/DD  -  SELECT CONVERT(VARCHAR(8), GETDATE(), 11) AS [YY/MM/DD]  98/11/23
    YYYY/MM/DD  -  SELECT CONVERT(VARCHAR(10), GETDATE(), 111) AS [YYYY/MM/DD]  1998/11/23
    YYMMDD  ISO  SELECT CONVERT(VARCHAR(6), GETDATE(), 12) AS [YYMMDD]  980124
    YYYYMMDD  ISO  SELECT CONVERT(VARCHAR(8), GETDATE(), 112) AS [YYYYMMDD]  19980124
    DD Mon YYYY HH:MM:SS:MMM(24h) 1  Europe default + milliseconds  SELECT CONVERT(VARCHAR(24), GETDATE(), 113)  28 Apr 2006 00:34:55:190 1
    HH:MI:SS:MMM(24H)  -  SELECT CONVERT(VARCHAR(12), GETDATE(), 114) AS [HH:MI:SS:MMM(24H)]  11:34:23:013
    YYYY-MM-DD HH:MI:SS(24h)  ODBC Canonical  SELECT CONVERT(VARCHAR(19), GETDATE(), 120)  1972-01-01 13:42:24
    YYYY-MM-DD HH:MI:SS.MMM(24h)  ODBC Canonical
    (with milliseconds)  SELECT CONVERT(VARCHAR(23), GETDATE(), 121)  1972-02-19 06:35:24.489
    YYYY-MM-DDTHH:MM:SS:MMM  ISO8601  SELECT CONVERT(VARCHAR(23), GETDATE(), 126)  1998-11-23T11:25:43:250
    DD Mon YYYY HH:MI:SS:MMMAM 1  Kuwaiti  SELECT CONVERT(VARCHAR(26), GETDATE(), 130)  28 Apr 2006 12:39:32:429AM 1
    DD/MM/YYYY HH:MI:SS:MMMAM  Kuwaiti  SELECT CONVERT(VARCHAR(25), GETDATE(), 131)  28/04/2006 12:39:32:429AM
      

  3.   

    SELECT CONVERT(VARCHAR(12), GETDATE(), 111) 
    “111”这个是转换的输出格式。
      

  4.   

    楼上几位又都抢答了-.-111是格式,我的博客里有详细记载,LZ可去看看http://hi.baidu.com/heaven%5Ffeather/blog/item/2ca4bd1095a54804213f2eab.html
      

  5.   

    输出:YYYY-MM-DD为: CONVERT(char(11),nsrq,120)
      

  6.   


    我改成了120,为什么在日期的后面多出了一个0?变成了:YYYY-MM-DD 0
      

  7.   

    SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS [YYYY-MM-DD] --直接使用120格式,注意这里是10
      

  8.   


    (case when nsrq is null then '' else convert(varchar(10),nsrq,120) end)用这个就ok了
      

  9.   

    15楼的语句改一下(case when nsrq is null or nsrq = '' then '' else convert(varchar(10),nsrq,120) end)如果一个日期字段为''那么convert为varchar后会变成1900-01-01这种东西,所以把null的和''都先判断一下,输出''即可
    如下例:declare @t datetime
    set @t = ''
    select case when @t is null or @t = '' then '' else convert(varchar(10),@t,120) end
    set @t = getdate()
    select case when @t is null or @t = '' then '' else convert(varchar(10),@t,120) end
    set @t = null
    select case when @t is null or @t = '' then '' else convert(varchar(10),@t,120) end
      

  10.   


    可以
    (case when nsrq is null then '' else convert(varchar(10),nsrq,120) end)
    这样
      

  11.   

    多谢lovehongyun ,我觉得这个方法最好,也谢谢大家!
      

  12.   

    不好意思不小心写错了:CONVERT(VARCHAR(10), GETDATE(), 120)
      

  13.   

    select convert(varchar(10),getdate(),121) 绝对可以,我们上一个项目所有日期都是这样子查出来的
      
    *****************************************************************************
    光脚穿鞋
      

  14.   

    select convert(varchar(10),getdate(),121) 绝对可以,我们上一个项目所有日期都是这样子查出来的
      
    *****************************************************************************
    光脚穿鞋
      

  15.   

    select convert(varchar(10),getdate(),121) 绝对可以,我们上一个项目所有日期都是这样子查出来的
      
    *****************************************************************************
    光脚穿鞋
      

  16.   

    (case when CONVERT(varchar(12),nsrq,23) is null then '' when CONVERT(varchar(12),nsrq,23)='1900/01/01' then ''  else CONVERT(varchar(12),nsrq,23) end)