【问题标题】:Get Time from Getdate()从 Getdate() 获取时间
【发布时间】:2011-10-05 16:31:24
【问题描述】:

我想获取Getdate()的结果,

例如

2011-10-05 11:26:55.000

进入

11:26:55 AM

我找了其他地方发现

Select RIGHT(CONVERT(VARCHAR, GETDATE(), 100),7)

这给了我

11:26AM

如此接近,我可以品尝到它!

【问题讨论】:

  • 您是否正在寻找这种指定格式的字符串表示形式?
  • 是否要求您无法在代码中解决此问题?
  • 如果你需要这个值作为时间,那么我会使用@Wil 的 DATEDIFF 答案。如果这真的是关于格式化字符串,那么我建议您在 SQL 之外执行此操作,例如在您的客户端应用程序中。
  • 我将接受这是 SQL 的限制(一个愚蠢的格式问题,但都一样)我将继续在 php 中执行此操作。还是谢谢你

标签: sql sql-server tsql time


【解决方案1】:
select convert(varchar(10), GETDATE(), 108)

在我刚才运行它时返回了17:36:56

【讨论】:

  • 啊该死的..这么近但没有雪茄。
  • 这样更好,但我需要上午/下午。
  • 否则可以使用 'convert(time, getdate())' 返回该答案。
【解决方案2】:

您是否尝试过按时进行演员表?

select cast(getdate() as time)

查看问题,我在结尾看到了“AM/PM”。所以,我对这个问题的回答是:

select format(getdate(), 'hh:mm:ss tt')

在 Microsoft SQL Server 2012 及更高版本上运行。

【讨论】:

  • 这是评论而不是答案
  • 如果您尝试运行此代码,您将看到答案而不是评论。
  • 谢谢@Marcelo,忘了格式化功能。
【解决方案3】:

您可能想查看this 旧线程。

如果您可以省略 AM/PM 部分并使用 SQL Server 2008,则应采用建议的方法here

要及时摆脱纳秒(SQL Server 2008),请执行以下操作:

SELECT CONVERT(TIME(0),GETDATE()) AS HourMinuteSecond

希望对你有帮助!

【讨论】:

  • 如果您将其转换为 varchar,它将不再是日期时间。请检查此link
【解决方案4】:

让我们试试这个

select convert(varchar, getdate(), 108) 

刚刚尝试一下

【讨论】:

    【解决方案5】:

    要得到你想要的格式:

    SELECT (substring(CONVERT(VARCHAR,GETDATE(),22),10,8) + ' ' + SUBSTRING(CONVERT(VARCHAR,getdate(),22), 19,2))

    你为什么要从 sql 中提取这个?

    【讨论】:

    • 我希望在 php 拉时间中有一个“实时”但从 sql 中提取的时钟。 (我正在使用 sqlsrv)
    • 你可能会更好,从许多角度来看,然后在 PHP 中进行格式化。让您的 SQL 与数据有关,并将 DATE 和/或 TIME 值作为真实值而不是字符串移动。将数据和演示文稿分开是非常好的形式。
    • @Dems,我考虑过这一点,并且过去可以并且已经这样做了,但我需要它来自我的计算机,而不是查看它的计算机。
    • @Newkidirus 你的意思是你需要时间在 SQL 盒子而不是 PHP 盒子上?
    • @Newkirirus - 你误解了我的意思。一定要使用 GetDate() 从 SQL 服务器获取日期。但是然后在 PHP 中将其格式化为字符串。 SQL 可以格式化,但它不是为格式化而设计的,它是为data设计的。
    【解决方案6】:

    如果是 SQL Server 2005,则没有 TIME 数据类型。仅获取时间组件的最简单方法是将日期设置为 1/1/1900。

    DECLARE @time DATETIME
    
    SET @Time = GETDATE()
    
    SELECT DATEADD(dd,DATEDIFF(dd,@time,'1/1/1900'),@time)
    

    【讨论】:

      【解决方案7】:

      您将能够使用以下查询获取时间:

      select left((convert(time(0), GETDATE ())),5)
      

      【讨论】:

        【解决方案8】:

        您可以使用数据部分来维护时间日期类型,并且可以将其与另一个时间进行比较。
        检查以下示例:

        declare @fromtime time = '09:30'
        declare @totime time
        SET @totime=CONVERT(TIME, CONCAT(DATEPART(HOUR, GETDATE()),':', DATEPART(MINUTE, GETDATE())))
        if @fromtime <= @totime 
        begin print 'true' end
        else begin print 'no' end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-16
          • 1970-01-01
          相关资源
          最近更新 更多