c# - 如何从 SQL Server 2005 获取 "dd/mm/yyyy h:m:s"格式的日期时间记录?

标签 c# sql-server-2005 tsql

我想从 sql server 2005 中获取日期时间格式的记录,例如“dd/mm/yyyy h:m:s”

我的数据库日期是默认的日期时间格式

AttLogId int
...
DownloadLog datetime

我正在尝试像这样检索日期时间:

SELECT AttLogId ,convert(varchar,DownloadLogDate,103) FROM  AttLog
ORDER BY DownloadLogDate

但我只得到日期而不是时间。

最佳答案

我建议您不要尝试获取特定字符串格式的值。获取它们作为 DateTime 值,然后使用 DateTime.ToString("dd/MM/yyyy H:m:s") 在 .NET 代码中格式化它们。

几乎总是值得尽可能长时间地以“自然”数据类型(此处为日期/时间)保存数据,仅在真正需要时才转换为文本。所以你的 SQL 应该是:

SELECT AttLogId, DownloadLogDate FROM  AttLog
ORDER BY DownloadLogDate

然后您如何检索数据将取决于您如何与 SQL 对话(例如,LINQ to SQL,使用 SqlDbReader 等)。但是您应该能够将其作为 DateTime 获取,然后在本地对其进行格式化。这将使测试更容易,调试更容易,让您更好地控制文化方面(日期分隔符,可能指定标准说明符而不是自定义说明符等)。

关于c# - 如何从 SQL Server 2005 获取 "dd/mm/yyyy h:m:s"格式的日期时间记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047334/

相关文章:

c# - Microsoft.Web.Infrastructure,Version=1.0.0.0 无法在 Windows 2012 64 位、MVC5 上加载

c# - Lazy<T> 是否应该比 getter 中的惰性初始化更受欢迎?

sql - 用于在 SQL Server 2005 中更新存储过程中的表的 if-else 条件

xml - 在 T-SQL 中解析包含多个 xmlns 的 xml

sql-server - OPENJSON 扩展了其他列

c# - 我怎样才能最好地检查 A xor B 是否为空?

c# - 无法将 MS.Internal.NamedObject 类型的对象转换为 System.Windows.Datatemplate

SQL:为什么在此 where 子句中过滤掉 NULL 值?

sql - 使用动态透视/逆透视来正确显示

sql - 如何在sql语句中将日期递增1作为时间数