2012-04-02 76 views
-3

我需要让我的日期是到以下格式:SQL日期格式转换疑问句

12/3/2011例如,而不是12/03/2011

我目前的结果集使用SQL是:

CONVERT(VARCHAR(10), Created, 105) as Created 

我怎么能做到这一点,谢谢!

+4

那是MM/d/yyyy或DD/M/yyyy的? – 2012-04-02 15:23:25

+0

日期格式105是DD/MM/YYYY(意大利风格)。因此海报想要D/M/Y。 – 2012-04-02 15:51:38

+0

虽然问题突出了使用模糊格式的问题。对于* MOST *观众,明确的输出格式更好,例如, 'YYYY-MM-DD'。 – 2012-04-02 15:54:58

回答

1

CONVERT(CHAR(10), '\'),CONVERT(DATETIME,创建),103)

0

添加替换“/ 0”与“/”,然后检查是否LEFT或第一个字符是0

+0

**可以让一些单词不是粗体** – JNK 2012-04-02 15:24:15

+0

查询的外观如何? – bobo2000 2012-04-02 15:25:43

+0

大胆只是一个意外..... – 2012-04-02 16:00:55

0

有一个更好的建议。我想补充的格式功能监守你问的是一个有点少见,

http://www.sqlusa.com/bestpractices2005/centurydateformat/

退房的fnFormatDate。然后你可以用任何你想要的格式对其进行格式化,但它可能/不可能是内联的,你想用语句

REPLACE(CONVERT(VARCHAR(10),Created,105),'\ 0'为创建

4

在SQL Server中没有标准的日期格式返回数天或数个月的个位数。您可以使用月,日和YEAR功能

-- M/D/Y format (USA) 
SELECT CAST(MONTH(@date) AS varchar(2)) + '/' 
     + CAST(DAY(@date) AS varchar(2)) + '/' 
     + CAST(YEAR(@date) AS varchar(4)) 

-- D/M/Y format (everywhere else) 
SELECT CAST(DAY(@date) AS varchar(2)) + '/' 
     + CAST(MONTH(@date) AS varchar(2)) + '/' 
     + CAST(YEAR(@date) AS varchar(4)) 
1

所有这些方法可能会影响性能,如果这是对一个列滚你自己。由于C#和许多其他客户端语言在格式化日期等功能时具有更灵活的功能,因此您应该在客户端层应用此格式。在那里,大概你会循环所有的行,并在你显示它们的时候单独处理值。

+0

保留数据作为数据。比较容易,做数学等。格式化字符串绝对是一种表示层功能。 – Bill 2012-04-02 15:51:40