【问题标题】:How can I have the right format of time with SQL Server?如何使用 SQL Server 获得正确的时间格式?
【发布时间】:2019-05-25 01:33:09
【问题描述】:

您好,我有这个专栏:

date1
6/19/2019 3:10:12 PM

我只想提取时间,所以我使用了以下查询:

select try_parse([date1] as time using 'en-US') from myTable

但问题是我得到了这个:

15:10:12.0000000

而我只想拥有这个:

15:10:12

我该如何解决这个问题?

非常感谢!

【问题讨论】:

    标签: sql sql-server sql-server-2008 sql-server-2005


    【解决方案1】:

    你可以使用FORMAT:

    SELECT FORMAT(try_parse([date1] as datetime using 'en-US'), 'HH:mm:ss') from myTable;
    

    【讨论】:

    • 我试过了,但我得到了Argument data type varchar is invalid for argument 1 of format function:/
    • 为什么?列是 varchar 吗?
    • 我认为是因为我使用 try_parse 将字符串转换为时间/日期。
    • 那么你不能使用[date1] 作为第一个参数。它接受日期时间类型。
    • 我可以还是我不能?
    【解决方案2】:

    你可以试试

    SELECT convert(varchar(max), try_parse('6/19/2019 3:10:12 PM' AS time USING 'en-US'), 108)
           FROM mytable;
    

    如果您希望将结果作为字符串进行显示。 (但您不应该将日期/时间存储为字符串。使用正确的数据类型。)

    【讨论】:

    • 是的,我想使用子字符串,但在我的情况下,我想保留数据的类型,因此不使用转换:/
    • @PeterHarris:你的问题毫无意义。 time 没有格式。它只能以不同的格式表示。但是这样的表示是一个字符串(不一定是数据库中的[n][var]char,而是在屏幕上显示它的程序中)。也许你想在客户端先格式化一下?
    猜你喜欢
    • 2013-05-03
    • 2012-08-15
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多