如何分隔日期和时间并在SQL Server的单独列中显示?

时间:2017-03-01 09:32:47

标签: sql-server date

我有一个SQL Server表,列TaskAssignDate,其中包含

等数据
2017-09-02 00:00:00.000

我想从该列中分隔日期和时间,并在不同的列中显示数据。

我有像这样的SQL查询

select 
    TaskAutoId, UserAutoId,
    CONVERT(varchar, TaskAssignDate, 100) as TaskAssignDate,
    TaskDescription, TaskStartDate,
    CONVERT(varchar, TaskEndDate, 100) as TaskEndDate,
    IsCloseByUser
from 
    tblTask
where 
    IsSelfAssign = 1

我想编辑以下查询,并将我的列(taskassigndate)拆分为两列

这是一种正确的方法吗?

3 个答案:

答案 0 :(得分:4)

您可以使用CAST以及要投射到的相应数据类型,DATETIME

select TaskAutoId
    , UserAutoId
    , CONVERT(varchar, TaskAssignDate, 100) as TaskAssignDate
    , TaskDescription
    , TaskStartDate
    , CONVERT(varchar, TaskEndDate, 100) as TaskEndDate
    , IsCloseByUser
    , CAST(TaskAssignDate AS DATE) TaskAssignDate -- the date part
    , CAST(TaskAssignDate AS TIME) TaskAssignTime -- the time part
from tblTask
where IsSelfAssign = 1

答案 1 :(得分:1)

SQL Server 2008及更高版本:

-- Select date
SELECT CAST(GETDATE() AS DATE);

-- Select time
SELECT CAST(GETDATE() AS TIME);

答案 2 :(得分:0)

试试这个

select TaskAutoId
    , UserAutoId
    , CONVERT(varchar, TaskAssignDate, 100) as TaskAssignDate
    , TaskDescription
    , TaskStartDate
    , CONVERT(varchar, TaskEndDate, 100) as TaskEndDate
    , IsCloseByUser
    , CONVERT(VARCHAR(10), TaskAssignDate, 101) TaskAssignDate -- the date    part
    , CONVERT(VARCHAR(10), TaskAssignDate, 108) TaskAssignTime -- the time part
from tblTask
where IsSelfAssign = 1