如何格式化 mssql 日期时间列以仅在网页输入字段上显示时间?

Posted

技术标签:

【中文标题】如何格式化 mssql 日期时间列以仅在网页输入字段上显示时间?【英文标题】:How to format mssql datetime column to display only time on web page input field? 【发布时间】:2014-02-15 13:30:36 【问题描述】:

使用 ASP.NETMSSQL

我有简单的日期时间列

输出: 1900-01-01 00:00:00.000

我知道在 sql 中我可以做到:

CONVERT(VARCHAR(8),GETDATE(),108)

输出: 00:00:00

另外dataformatstring="0:MMMM d, yyyy" 似乎不适用于输入字段。


我听到了强烈的反对意见,要求不要在 sql 中转换,而是在网页上使用 formatting


问题

考虑到这一点,将附加到输入字符串的日期时间完全格式化为时间有什么好的做法?

理想的输出是: 00:00

我在这里阅读了很多问题,但没有找到针对输入字段时间的特定问题的问题。

【问题讨论】:

【参考方案1】:

使用Convert,您可以将字符串转换为Date 并使用.ToString("t") 格式化

c#

var aDate = Convert.ToDateTime("1900-01-01 00:00:00.000");
Console.WriteLine(aDate.ToString("t"));

vb

Dim aDate = Convert.ToDateTime("1900-01-01 00:00:00.000")
Console.WriteLine(aDate.ToString("t"))

这会输出00:00

如果你想要毫秒,你可以使用大写的 T。

查看这里了解更多信息:

http://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx

http://msdn.microsoft.com/en-us/library/8tfzyc64(v=vs.110).aspx

【讨论】:

这个可以添加到 asp:textbox 字段中,而不是后面的代码或 java 中吗? 我想这取决于你如何绑定它。您是否在考虑 Web 表单中的网格视图?这是一个例子:***.com/questions/14029338/… 它还有一个绑定列,您可以直接在 html 标记中指定,看看这里。 msdn.microsoft.com/en-us/library/… 谢谢@hutchonoid 我知道 dateformatstring 但在边界域之外没有工作。您的回答可以完成工作,但是我意识到只需添加 type="time" 即可完成相同的工作。不过感谢您的帮助。 SQL Server 2012 及大约支持 FORMAT 命令。但是,它比本机 TSQL 慢,因为它使用需要在调用期间加载的 CLR。它具有与 dataformatstring 相同的选项。【参考方案2】:

为什么不在数据库端进行转换呢?您不执行 SELECT * 因为它会发送更多数据。那么,为什么不用更大的硬件,由数据库服务器来完成这项工作呢?

这是执行您需要的 TSQL 代码。

-- date time variable
declare @dt as datetime;
set @dt = getdate();
print @dt

-- just return time as string
declare @txt as varchar(8);
set @txt = cast(@dt as time);
print @txt

-- sample use in query
select 
  cast(cast(getdate() as time) as varchar(8)) as answer

消息窗口输出。

Jan 24 2014  9:23AM
09:23:47

结果窗口输出。

我选择返回秒数。如果这不是业务规则,请更改为 varchar(5)。

【讨论】:

我通常会这样做,但正如我所提到的,我听到过激烈的争论。 请发布一些链接。我是一名 DBA/ETL 人员,但从 SW DEV 开始。我已经完成了 C# 和 ASP .NET 的分享。总是喜欢学习。 抱歉,芽看找不到帖子了。他们都在***上......某处。【参考方案3】:

我找到了一个简单的解决方案。只需添加属性类型。这也应该适用于普通的 html 输入字段。

<asp:TextBox ID="Time" RunAt="Server" type="time"/>

注意:这可能不完全兼容跨浏览器。 尽管我的测试似乎另有说明。 Firefox 不支持 type 字段,但格式如下。


输入

1900-01-01 00:00:00.000

type="time"

输出为:

00:00:00

type="date"

输出为:

1900-01-01

【讨论】:

很好,从来不知道你能做到这一点。我已经有一段时间没有使用 Web 表单了,现在都是 MVC,但很高兴知道。

以上是关于如何格式化 mssql 日期时间列以仅在网页输入字段上显示时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何重新格式化 CSV 中的日期以仅显示 MM/YYYY

如何更改引导 datetimepicker 以仅显示日期而不显示时间

在 Oracle SQL 中组合不同的日期和时间列以创建一个具有日期/时间格式的列

如何以日期格式转换特定excel文件的列?

如何编写查询以仅在满足条件时才显示值?

如何设置表格视图以仅在 ios 中显示单行?