如何使用varchar格式格式化日期存储

时间:2019-02-14 15:22:42

标签: sql sql-server

我如何格式化以varchar格式存储的日期。

我已将日期保存在varchar(255)中,格式为dd:mm:yyyy hh:mm:ss。我需要转换或以hh:mm:ss格式获取。我不想更改数据库结构

我尝试过,

SELECT [FinishingTime] format(varchar(255), [FinishingTime], 120)

除了这个问题: 我会尝试更改数据库结构。在Sql数据库中,如果我使用datetime2(0)。然后我在通过常规代码时遇到了问题。我长期以来尝试转换为dateformat并设置在字符串中,然后存储在 数据库。

def time1= time / 1000;   here time is in long
            def time2 = time1 + 3600 + timeLeft;  
            LocalDateTime dateTime = LocalDateTime.ofEpochSecond(Finish2, 0, ZoneOffset.UTC);
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss", Locale.ENGLISH);
            String formattedDate = dateTime.format(formatter);
            machine.setFinishingTime(formattedDate);    

Now i use the getter and setter in a class. 

public String getFinishingTime()
    {
        return getPropertyContainer().getString(FINISHING_TIME, "")
    }

    public void setFinishingTime(String finishingTime)
    {
        getPropertyContainer().setString(FINISHING_TIME, finishingTime)
    }

现在的问题是,如果我使用日期时间而不是字符串,它不会写在数据库中,或者我无法通过设置器进行设置。

2 个答案:

答案 0 :(得分:1)

您不需要对话,只需使用substring()函数:

select substring([FinishingTime], charindex(' ', [FinishingTime]) + 1, len([FinishingTime]))
from table t;

但是,您的想法很难以自定义格式存储日期时间,这会在数据查询时给您带来很多麻烦。

答案 1 :(得分:0)

我认为它是MS SQL

select convert(varchar, FinishingTime, 108)

select convert(varchar, FinishingTime, 8)