请任何ove建议我如何从sql日期中删除时间部分。我已经阅读了100篇文章,其中大多数删除时间但离开00:00:00 behine我不想也知道我可以通过转换为varchar删除这些ZERO但不幸的是我无法更改类型日期列必须是日期类型而不是字符串
请告知
由于
答案 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)
修改强>
答案 5 :(得分:0)
如果你可以升级到SQL2008,它有一个单独的时间命令。
我看到你说你想把它保留为日期时间对象,所以据我所知,如果你不能升级到2008那么你就会被零点困住
答案 6 :(得分:0)
您无法从thr datetime
数据类型字段中删除时间部分。
您唯一能做的就是在输出之前将其强制转换为date
或varchar
数据类型,或者在插入/更新之前将时间部分设置为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。