【问题标题】:Display HH:mm from decimal (H.m)显示 HH:mm 从十进制 (H.m)
【发布时间】:2017-02-07 21:04:48
【问题描述】:

员工的打卡时间以十进制形式存储在数据库中

下午 4:30 存储为 16.50

我想使用新的数据库列将小数转换为“HH:mm”

16.50 显示为“16:30”

我相信答案会是这样的

CONVERT(DATETIME,CONVERT(NVARCHAR,CLOCK_IN_TIME))

但输出的格式不正确,通常我会收到错误“从字符串转换日期和/或时间时转换失败”

【问题讨论】:

  • 您是否仅将时间转换为日期时间?那也需要一个日期。尝试使用时间数据类型。 msdn.microsoft.com/en-us/library/…
  • @Kevin 用几秒钟查看更新的答案......更精确

标签: c# sql sql-server erp


【解决方案1】:

另一种选择

Declare @T decimal(10,2) = 7.25
Select Format(DateAdd(SECOND,ceiling((@T/24)*86400),0),'HH:mm')

返回

07:15

【讨论】:

    【解决方案2】:

    嗯。 . .如果你使用的是 SQL Server,你可以这样做:

    dateadd(minute,
            floor(val) * 60 + 100 * (val - floor(val)),
            0)
    

    【讨论】:

    • 谢谢。输出现在是 12:07:48 输入 7:48(所以小时移动到分钟,分钟移动到秒),需要小时到小时和分钟到分钟
    • @Kevin 。 . .那很好笑。当我测试它时,我使用了minute,但显然出于某种原因在答案中输入了second
    猜你喜欢
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 2013-10-21
    • 2018-10-25
    相关资源
    最近更新 更多