2012-04-23 36 views
-1

据我网对发现的声明如何在mm/yyyy格式的gridview列中显示日期?

SELECT DATEPART(MONTH,columnName),DATEPART(YEAR,columnName) 

做和2列,列出结果。我需要的是显示日期从数据库(MS SQL)在单个列的格式,如mm/yyyy。

有没有办法在一列显示呢?

+0

你能否澄清一下,你的标题是“mm-yyyy”,但问题主体是“mm/yyyy”。这不是一个很大的区别,但我们希望答案是准确的,并反映你最终的结果。 – 2012-04-23 20:04:08

+0

@ Aron,这是mm/yyyy。我用下面的语句解决了我的问题:SELECT RIGHT(CONVERT(VARCHAR(10),columnName,103),7)[DATE1] FROM tableName。我的项目要求是通过发送日期作为参数来显示存储在MS SQL中的日期列。所以我以dd/MM/yyyy格式创建了组合框和存储日期。使用上面写的查询和以这种格式填充的日期,我可以从应用程序中的数据库中检索结果,但是如果以MM/yyyy格式发送date作为参数,我无法做到这一点。我很困惑,因为我从所需的格式从SQL Server中检索数据? – black12 2012-04-23 20:15:07

+0

您需要将演示文稿与数据分开。例如,您应该以任何区域格式显示日期,但您应该向SQL Server发送安全且明确的日期(例如YYYYMMDD)。当然,您的组合框控件可以帮助您规定您发送回SQL Server的字符串格式... – 2012-04-23 20:21:23

回答

1

既然你已经明确地提出了GridView,它是在最后的地方格式化日期时间很好的做法。所以我会建议使用的.NET方法String.FormatToString

String formatted = date.ToString("MM-yyyy"); 

或者用BoundFieldDataFormatString

<asp:GridView ID="GridView1" runat="server"> 
    <Columns> 
     <asp:BoundField DataFormatString="{0:MM-yyyy}" DataField="DateField" HeaderText="Date" ReadOnly="True" /> 
    </Columns> 
</asp:GridView> 
+0

是“mm”还是“MM”?在SQL Server 2012版本的'FORMAT()'(它是从.NET版本派生的)中,'mm'给我几分钟,而不是几个月。 – 2012-04-23 16:15:15

+0

@AaronBertrand:正如我所指出的,我不会使用dbms格式化或转换日期时间字段。因此上面是C#。也许他需要在程序的另一个地方使用日期时间,所以你通常需要转换字符串。 – 2012-04-23 16:19:06

+1

但在C#中'mm'确实是月份数而不是分钟?我了解你对数据库格式的反对意见,但有时它是合适的(例如,考虑同一查询的多个消费者,用不同语言编写并由不同团队维护)。 – 2012-04-23 16:21:20

1
SELECT RIGHT('0' + CONVERT(VARCHAR(2), MONTH(columnName)), 2) 
    + '/' + CONVERT(CHAR(4), YEAR(columnName)) 
FROM dbo.tableName; 

你也可以这样说:

SELECT RIGHT(CONVERT(CHAR(10), columnName, 103), 7) 
    FROM dbo.tableName; 

在SQL Server 2012中,你将能够说:

SELECT FORMAT(columnName, 'MM/yyyy') FROM dbo.table; 
+0

@Aron Bertrand, – black12 2012-04-23 19:54:50

0

嘿,你可以在GridView的设置格式类似下面

<asp:TemplateField > 
    <ItemTemplate> 
      <asp:Label Text='<%# Convert.ToDateTime(DataBinder.Eval(Container.DataItem, "Created_Date ")).ToString("mm-yyyy")%>' 
    ID="lblCreatedDate" runat="server"></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 
相关问题