将Datetime格式转换为varchar格式样式解决方法

时间:2013-08-28 10:16:43

标签: sql sql-server tsql datetime

我有一个datetime列,我需要按以下格式显示:

YYYY/MM/DD 00:00:00:000

使用CONVERT,我找不到合适的样式。

格式中的/非常重要,因为需要将VARCHAR列与文字YYYY/MM/DD 00:00作为描述的一部分进行比较,如下所示:

如果我能找到一种方式/风格,那么我可以使用SUBSTRING函数将其与下面的值进行比较:

Diary item added for : 2013/08/20 14:12

我看过:

http://databases.aspfaq.com/database/what-are-the-valid-styles-for-converting-datetime-to-string.html

但是,我找不到任何足够的样式。只有 - 。

3 个答案:

答案 0 :(得分:5)

您可以使用与您要比较的内容最相似的样式,并使用REPLACE-替换为\

SELECT REPLACE(CONVERT(<yourstyle>),'-','/');

编辑 Cudo's to @bluefeet

SELECT REPLACE(CONVERT(varchar(23), yourdate, 121),'-','/');

来自Technet:投射和转换

  

21或121(2)ODBC规范(毫秒)yyyy-mm-dd   HH:MI:ss.mmm(24小时)

答案 1 :(得分:3)

您可以在比较两者之前以任何格式转换这两个日期,只需使用以下任何一种:运行此并且您可以从中进行选择,确保在比较之前转换这两个日期

Select    
    convert(varchar, GetDate(), 100) as '100 Conversion',    
    convert(varchar, GetDate(), 101) as '101 Conversion',    
    convert(varchar, GetDate(), 102) as '102 Conversion',    
    convert(varchar, GetDate(), 103) as '103 Conversion',    
    convert(varchar, GetDate(), 104) as '104 Conversion',    
    convert(varchar, GetDate(), 105) as '105 Conversion',    
    convert(varchar, GetDate(), 106) as '106 Conversion',    
    convert(varchar, GetDate(), 107) as '107 Conversion',    
    convert(varchar, GetDate(), 108) as '108 Conversion',    
    convert(varchar, GetDate(), 109) as '109 Conversion',    
    convert(varchar, GetDate(), 110) as '110 Conversion',    
    convert(varchar, GetDate(), 111) as '111 Conversion',    
    convert(varchar, GetDate(), 112) as '112 Conversion',    
    convert(varchar, GetDate(), 113) as '113 Conversion',    
    convert(varchar, GetDate(), 114) as '114 Conversion',    
    convert(varchar, GetDate(), 120) as '120 Conversion',    
    convert(varchar, GetDate(), 121) as '121 Conversion',    
    convert(varchar, GetDate(), 126) as '126 Conversion',    
    convert(varchar, GetDate(), 130) as '130 Conversion',    
    convert(varchar, GetDate(), 131) as '131 Conversion'

或使用此

select REPLACE(convert(varchar, GetDate(), 121),'-','/')

答案 2 :(得分:2)

为什么你不能这样做。将varchar列转换为date而不是将date转换为varchar