【问题标题】:Converting datetime to days; minutes and hours in sql将日期时间转换为天数; sql中的分钟和小时
【发布时间】:2021-05-22 09:58:10
【问题描述】:

我正在尝试转换 Microsoft SQL Serverdatatimecurrent_timestamp 列之间的日期差异

下面是我得到的编码和输出示例:

代码

select top 1
    [Date & Time] = '2021-02-18 20:45:49.0000000' 
    ,convert(varchar,DATEDIFF(dd,[Date & Time],CURRENT_TIMESTAMP)) + 'Days'
    + convert(varchar,DATEDIFF(HH,[Date & Time],CURRENT_TIMESTAMP) % 24) + 'Hours' 
    + convert(varchar,DATEDIFF(MI,[Date & Time],CURRENT_TIMESTAMP) % 60) + 'Mins' as [Waiting Time]
from Invoices 

电流输出


 Date & Time                |     Waiting Time
2021-02-18 20:45:49.0000000 |   1Days15Hours0Mins

预期输出


 Date & Time                |     Waiting Time
2021-02-18 20:45:49.0000000 |   0Days15Hours0Mins

谁能告诉我为什么我得到的是1 days 而不是0 days?最终目标是将当前时间戳与发票日期和时间之间的日期差转换为天小时和分钟格式。

【问题讨论】:

  • DATEDIFF 统计一天改到第二天的次数。在您的示例中,第一天 = 18,第二天 = 19,所以DATEDIFF 认为这是一天的差异。为了得到你需要的东西,你必须计算小时(或分钟、秒)的差异并将其重新计算为 24 小时
  • @HoneyBadger - 感谢您的回复,设法使用以下编码:,convert(varchar(10),(DATEDIFF(s,[Date & Time],CURRENT_TIMESTAMP))/86400) + 'Days ' + convert(varchar(10),((DATEDIFF(s,[Date & Time],CURRENT_TIMESTAMP))% 86400) /24) + 'Hours ' + convert(varchar(10),(((DATEDIFF(s,[Date & Time],CURRENT_TIMESTAMP)) % 86400) %3600)/60) + 'Mins'
  • 似乎是一个很好的解决方案。随意回答您自己的问题,它可能会在将来对其他人有所帮助

标签: sql-server casting timestamp


【解决方案1】:

我已经设法使用以下代码解决了上述问题:

convert(varchar(10),(DATEDIFF(s,[Date & Time],CURRENT_TIMESTAMP))/86400) + 'Days '  
+ convert(varchar(10),((DATEDIFF(s,[Date & Time],CURRENT_TIMESTAMP))% 86400) /24) + 'Hours '  
+ convert(varchar(10),(((DATEDIFF(s,[Date & Time],CURRENT_TIMESTAMP)) % 86400) %3600)/60) + 'Mins'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多