【问题标题】:My SQL Code is showing 00 instead of 12 AM. How can i adjust this?我的 SQL 代码显示 00 而不是 12 AM。我该如何调整这个?
【发布时间】:2011-10-27 18:39:16
【问题描述】:

我有以下代码对我来说非常有用。我在 SQL 的 SSIS 包中使用它。我遇到的问题是在午夜和凌晨 1:00 之间,小时显示为 00。我想尽可能地使用以下代码,因为它对我有用,但只需进行必要的调整.任何帮助将不胜感激!!!

谢谢你, 约翰

    SELECT     CASE WHEN DATEPART(hour, DateTimeField) < 13 THEN 
    RIGHT(REPLICATE(' ', 2) + CAST(datepart(hour, DateTimeField) AS VARCHAR(2)), 2) 
    ELSE 
    RIGHT(REPLICATE(' ', 2) + CAST(datepart(hour, dateadd(hour, - 12, DateTimeField))
    AS VARCHAR(2)), 2) END

【问题讨论】:

    标签: sql sql-server sql-server-2008 datetime


    【解决方案1】:

    我认为您可以简单地这样做:

    SELECT SUBSTRING(CONVERT(CHAR(14), DateTimeField, 100), 13, 2)
    

    【讨论】:

    • 好的,我试试看!所以这段代码将替换我目前使用的所有代码?我会很快让你知道结果如何。谢谢!
    • @John:是的。此代码应替换您在问题中发布的所有代码。
    • 还请记住,由于这是一些较大代码的一部分(或者看起来如此),您可以通过更好地使用 CONVERT 函数来替换整个代码。跨度>
    • 好点!稍后我将能够对此进行测试。它肯定比我这样做的方式干净得多,是的,这只是更大代码的一部分。谢谢!
    • 这很完美!谢谢!我不太了解这种编码,但我会做一些更多的研究,以满足未来的需求。我很感激!
    【解决方案2】:

    假设是 Oracle,因为你没有指定。一般的技术是使用函数TO_CHAR和一个允许01-12而不是00-23的日期转换模板。

    select to_char(sysdate, 'HH:MI:SS AM') from dual;
    
    select to_char(sysdate, 'HH24:MI:SS') from dual;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      相关资源
      最近更新 更多