Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在gridview列中以mm/yyyy格式显示日期?_Sql Server_Datepart - Fatal编程技术网

Sql server 如何在gridview列中以mm/yyyy格式显示日期?

Sql server 如何在gridview列中以mm/yyyy格式显示日期?,sql-server,datepart,Sql Server,Datepart,据我在网上找到的声明 SELECT DATEPART(MONTH,columnName),DATEPART(YEAR,columnName) 执行此操作并在两列中列出结果。我需要的是以类似mm/yyyy的格式在单列中显示数据库MS SQL中的日期 有没有办法将其显示在一列中?因为您明确要求使用GridView,所以最好在最后一个位置设置日期时间的格式。因此,我建议使用.NET方法作为String.Format或ToString: 或使用边界字段的: 你也可以这样说: SELECT RIGHT(

据我在网上找到的声明

SELECT DATEPART(MONTH,columnName),DATEPART(YEAR,columnName)
执行此操作并在两列中列出结果。我需要的是以类似mm/yyyy的格式在单列中显示数据库MS SQL中的日期


有没有办法将其显示在一列中?

因为您明确要求使用GridView,所以最好在最后一个位置设置日期时间的格式。因此,我建议使用.NET方法作为String.Format或ToString:

或使用边界字段的:

你也可以这样说:

SELECT RIGHT(CONVERT(CHAR(10), columnName, 103), 7)
  FROM dbo.tableName;
在SQL Server 2012中,您可以说:

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

嘿,您可以在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>

是mm还是mm?在SQL Server 2012的格式版本中,mm是从.NET版本派生出来的,mm给我的是分钟,而不是月。@AaronBertrand:正如我所指出的,我根本不会使用dbms格式化或转换日期时间字段。因此上面是C。也许他需要程序中另一个地方的datetime,所以你经常需要转换字符串。但在C中,mm真的是月数而不是分钟?我理解您反对在数据库中设置格式,但有时这是适当的,例如,考虑同一查询的多个使用者,使用不同的语言编写,由不同的团队维护。是的,DateTime.Now.ToStringmm-yyyy始终独立于客户端返回04-2012。即使您想根据用户的语言设置日期时间的格式,也最好存储用户的区域性,并通过提供该区域性信息在服务器端设置格式。@AaronBertrand:实际上您是对的。我确信我已经在上面测试过了,可能是在19:04;因此,DateTime.Now.ToStringmm-yyyy实际上返回minute-2012。据此编辑了我的答案。谢谢。你能澄清一下吗,你的标题是mm yyyy,但问题的主体是mm/yyyy。虽然差别不大,但我们希望答案准确,并能反映出您最终的目标。@Aron,这是mm/yyyy。我用以下语句解决了问题:从tableName中选择RIGHTCONVERTVARCHAR10,columnName,103,7[DATE1]。我的项目要求是通过发送日期作为参数来显示存储在MS SQL中的日期列。所以我创建了combobox,并将日期存储为dd/MM/yyyy格式的字符串。使用我上面编写的查询和以这种格式填充的日期,我可以在应用程序中从数据库检索结果,但如果以MM/yyyy格式将日期作为参数发送,则无法执行此操作。我对此感到困惑,因为我以所需的格式从sql server检索数据?您需要将表示和数据分开。例如,您应该以任何有意义的区域格式显示日期,但您应该向SQL Server发送安全且明确的日期,例如YYYYMMDD。当然,您的combobox控件可以帮助您指定发送回SQL Server的字符串的格式……非常感谢:现在一切都清楚了。
SELECT RIGHT(CONVERT(CHAR(10), columnName, 103), 7)
  FROM dbo.tableName;
SELECT FORMAT(columnName, 'MM/yyyy') FROM dbo.table;
<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>