【问题标题】:How to get datetime records in "dd/mm/yyyy h:m:s" format FROM SQL server 2005?如何从 SQL Server 2005 获取“dd/mm/yyyy h:m:s”格式的日期时间记录?
【发布时间】:2011-12-24 05:50:11
【问题描述】:

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

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

AttLogId int
...
DownloadLog datetime

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

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

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

【问题讨论】:

标签: c# sql-server-2005 tsql


【解决方案1】:

我建议您不要尝试获取特定字符串格式的值。将它们作为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 获取,然后在本地对其进行格式化。这将使测试更容易,更容易调试,让您更好地控制文化方面(日期分隔符,可能指定标准说明符而不是自定义说明符等)。

【讨论】:

  • 请帮帮我,因为我无法提问所以请帮帮我,Erro Like This = 抱歉,我们不再接受来自此帐户的问题。请参阅goo.gl/C1Kwu 了解更多信息。
  • @JigJet12:我建议你遵循那个页面上的建议。
  • @Jig12:那么这对你没有用吗?它真的会比在数据库中转换它干净。您应该避免在真正需要之前执行字符串转换。
  • :: 好的 谢谢你给我正确的建议:)
【解决方案2】:

这是因为您使用的是 103 ,所以它只会给出 date 。 如果您想要更多格式,请检查: http://msdn.microsoft.com/en-us/library/ms187928.aspx

【讨论】:

    【解决方案3】:

    根据需要,你可以试试这个

    SELECT AttLogId , convert(varchar(10),DownloadLogDate,103) +'  '+ convert(varchar(8),DownloadLogDate,108) FROM  AttLog ORDER BY DownloadLogDate 
    

    注意:第一个是日期,第二个是 H:M:S 中的时间

    希望对你有所帮助..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-12
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 2017-10-02
      相关资源
      最近更新 更多