SQL日期格式:dd/mm/yyyy hh:ss

3
我一直在寻找一个日期格式:dd/mm/yyyy hh:mm。
我使用convert (varchar, rc.CreatedDateTime, ???)。131也不是我需要的。
我似乎能够找到很多非常接近的日期格式,但不是这个特定的日期格式,我是否错过了什么明显的东西,或者是否有另一个函数可以使用?

1
hh:ss?你不关心分钟吗?为什么要使用区域格式?这样你可以确保美国和其他观众会完全困惑吗?为什么不使用一个明确的输出格式,比如“yyyy-mm-dd”? - Aaron Bertrand
这是一份针对企业的私人报告,因此它与地区相关性极高... - dann.dev
3个回答

5
你可以使用这个方法,只需要将 getdate() 替换为你的字段即可:
select convert(char(10), getdate(), 103) + ' ' 
    + convert(char(8), getdate(), 108)

这将为您提供结果:

14/03/2012 17:05:47

如果你只想要小时和秒数,则:
select convert(char(10), getdate(), 103) + ' ' 
    + Left(convert(char(8), getdate(), 108), 2) + ':'
    + Right(convert(char(8), getdate(), 108), 2)

这里有一个有用的链接,包含日期/时间转换:

http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

根据您的评论,应该是 dd/mm/yyyy hh:mm,那么查询语句将如下:
select convert(char(10), getdate(), 103) + ' ' 
    + Left(convert(char(8), getdate(), 108), 5) 

没有使用 LEFT()

select convert(varchar(10), getdate(), 103) + ' ' 
    + convert(char(5), getdate(), 108) 

@dann.dev 没问题,链接非常方便,可以收藏。我经常使用它。 - Taryn
为什么使用varchar呢?你预期除了定义的字符数之外还有其他东西吗?而且为什么使用LEFT(CONVERT(VARCHAR(8), ...), 5)而不只是CONVERT(VARCHAR(5), ...)呢? - Aaron Bertrand
@AaronBertrand 我通常在日期转换中使用varchar,但我理解你的观点。我调整了查询以使用char,并将长度从8缩短为2,5。感谢你指出这一点。至于我最后一个LEFT,它显示您可以仅返回时间的5个字符。 - Taryn
在我看来,仍有两件事情不对。首先,LEFT(CONVERT(CHAR(2), ...), 2) 可以简化为 CONVERT(CHAR(2), ...),因为左侧是多余的。其次,你应该尝试使用 RIGHT(CONVERT(CHAR(2), ...), 2) - Aaron Bertrand
@AaronBertrand 我把 Left/Right 改回 char(8),这样如果他想要 hh:ss,就能得到正确的值了,因为这是最初发布问题时的格式。 - Taryn

3
假设您需要的是dd/mm/yyyy hh:mm而不是dd/mm/yyyy hh:ss。
SELECT convert (varchar(10), rc.CreatedDateTime, 103) + ' ' + 
       convert(varchar(5), rc.CreatedDateTime, 108)

为什么使用varchar?长度总是固定的。 - Aaron Bertrand

3
SELECT CONVERT(CHAR(10), rc.CreatedDateTime, 103) + ' ' 
     + CONVERT(CHAR(5),  rc.CreatedDateTime, 108)
FROM dbo.[table_name];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接