日期时间格式

时间:2009-04-03 07:22:02

标签: sql sql-server datetime formatting

您好我需要以这样的方式编写sql查询,它将以下列格式检索日期 dd MM yyyy HH mm ss AM(或PM)

例如 31 12 2009 12 45 06 AN

5 个答案:

答案 0 :(得分:4)

我建议在中间层/层或客户端格式化字符串。使用各种格式方法会更容易......这是一个演示要求,为什么不在表示层中进行格式化呢?

答案 1 :(得分:2)

您可以在MSDN上查看CAST and CONVERT

SELECT CONVERT(VARCHAR(30), datetime_field, 130) AS formatted_date

130 会将日期转换为以下格式:dd mon yyyy hh:mi:ss:mmmAM(或PM)

答案 2 :(得分:1)

很难让它变得更低效,但这里就是

DECLARE @GetDate DATETIME
SET @GetDate = '01-01-2009 13:10:20'
SELECT 
  CAST(DATEPART(dd, @GETDATE) AS VARCHAR(2)) + ' '
  + CAST(DATEPART(mm, @GETDATE) AS VARCHAR(2)) + ' '
  + CAST(DATEPART(yyyy, @GETDATE) AS VARCHAR(4)) + ' '
  + CAST(DATEPART(hh, @GETDATE)%12 AS VARCHAR(2)) + ' '
  + CAST(DATEPART(mi, @GETDATE) AS VARCHAR(2)) + ' '
  + CAST(DATEPART(ss, @GETDATE) AS VARCHAR(2)) + ' '
  + CASE WHEN DATEPART(hh, @GETDATE) > 12 THEN 'AM' ELSE 'PM' END

答案 3 :(得分:1)

如果您正在使用SQL 2005和2008,那么最好的方法是编写CLR过程来为您进行格式化。 .NET框架具有针对各种数据类型的非常强大的格式化例程,当您想要在数据库级别进行格式化时,可以利用它们。

虽然当然是否应该如此具有争议性。我可以理解SQL Server团队的理由是不要向后弯曲以支持灵活的格式化,因为数据库的主要工作是存储和检索数据。

答案 4 :(得分:0)