从sql中删除时间

时间:2010-08-04 09:23:30

标签: sql sql-server-2005

请任何ove建议我如何从sql日期中删除时间部分。我已经阅读了100篇文章,其中大多数删除时间但离开00:00:00 behine我不想也知道我可以通过转换为varchar删除这些ZERO但不幸的是我无法更改类型日期列必须是日期类型而不是字符串

请告知

由于

9 个答案:

答案 0 :(得分:4)

数据库中的日期时间列始终包含日期部分和时间部分。 SQL Server 2008引入了仅存储日期或仅存储时间的类型。但是,只要该列的类型为datetime,您就必须接受时间部分存在,并且您可以在应用程序中忽略它(通过应用合适的格式)。

您可以向表中添加检查约束,以确保列中的所有条目始终具有相同的时间部分(例如00:00:00)。

答案 1 :(得分:2)

SQL Server DateTime类型是SQL 2005中的日期和时间,没有仅限日期的字段类型,您无法删除时间组件并且仍然具有DateTime类型的字段。您的选项是您已经概述的选项:转换为(n)varchar并删除时间组件,将其保留为DateTime并接受它具有时间组件。为什么要删除时间组件,这将为您解决什么问题。

除了下面的评论之外,数据库不是您应该在哪里格式化您在GridView中显示的日期字符串。您可以在显示层中显示图层内容,在本例中为gridview。当数据绑定到gridview时,您需要在数据中使用格式字符串。是的例子如下。

的BoundField:

<columns>
  <asp:BoundField headertext="CreationDate" dataformatstring="{0:dd-MM-yyyy}" //rearrange these letters as necessary
       datafield="CreationDate"  />
</columns>

模板列

<itemtemplate>
    <asp:Label id="Label1" runat="server" Text='<%# Bind("CreationDate", "{0:M-dd-yyyy}") %>'>
    </asp:Label>
</itemtemplate>

答案 2 :(得分:2)

您需要将a format string应用于gridview列,才能显示日期部分。这种字符串的一个例子是dd MMMM yyyy

这是ASP.NET gridview吗?如果是,则有示例code here

答案 3 :(得分:1)

试试这个

select cast(convert(char(11),getdate(),113)as datetime)

答案 4 :(得分:1)

SELECT convert(varchar, getdate(), 101)

OR

Declare @datetime datetime
set @datetime = getdate()
SELECT convert(varchar, @datetime, 101)

DateTime Formats

修改

  • SQL server 2008就是这样 功能,如果你可以升级。
  • 请务必保存00:00:00 你的桌子并删除时间部分
  • 返回日期时间并将其格式化 网格或代码。

答案 5 :(得分:0)

如果你可以升级到SQL2008,它有一个单独的时间命令。

我看到你说你想把它保留为日期时间对象,所以据我所知,如果你不能升级到2008那么你就会被零点困住

答案 6 :(得分:0)

您无法从thr datetime数据类型字段中删除时间部分。

您唯一能做的就是在输出之前将其强制转换为datevarchar数据类型,或者在插入/更新之前将时间部分设置为00:00:00。

示例:

声明:

select cast(getdate() as date) 

仅返回日期

答案 7 :(得分:0)

你想做什么?

为什么要关心数据库是在保存准确的时间还是00:00:00?

当您查询此字段(在DB内部或外部)时,您可以忽略时间值并仅显示日期......

再说一次,说出你要做的事情......我相信你会更容易帮助你。

答案 8 :(得分:0)

更新mytable set mydatetime = convert(datetime,convert(char(10),mydatetime,103),103)

这将更新您的表格。希望这是你想要的。

103:将日期时间格式化为dd / mm / yyyy。