SQL Server中的日期/时间数据类型和声明

时间:2013-12-01 06:03:51

标签: sql sql-server date timestamp

我想在我的表格中有一个日期和时间列。拥有这两列的主要目的是能够返回如下查询结果:

  1. 期间November 2011内完成的治疗次数。
  2. 00:0108:00小时之间轮班工作的人数。
  3. 我有两个表,其中包含以下属性(其中包括):

     Shift(day, month, year)
     Treatment(start_time, date)
    
    1. 对于第一个表 - Shift,查询结果需要返回值 (例如:2012年12月30日)
    2. 对于第二个表,start_time需要具有类似0001和的值 0800(正如我上面提到的)。虽然,日期可以返回值 '2011年11月'。
    3. 最初我认为使用date数据类型来声明每个day/month/year/date变量都可以完成这项工作。但这似乎没有成功。我应该分别对intvarcharint分别使用daymonthyear吗?此外,由于date变量没有组件部分,date数据类型在这里工作吗?最后,如果我对timestamp属性使用start_time数据类型,那么我应该在插入列中输入的值应该是08:00:00?

      我正在使用SQL Server 2014

      感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

AFAIK最好使用DateTime类型的一列而不是分别保存日期和时间的两列。

您也可以通过将日期或时间强制转换为相应的类型来查询此列:

DECLARE @ChangeDateTime AS DATETIME = '2012-12-09 16:07:43.937'
SELECT CAST(@ChangeDateTime AS DATE) AS [ChangeDate],
       CAST(@ChangeDateTime AS TIME) AS [ChangeTime]

结果:

ChangeDate      ChangeTime
----------    ----------------
2012-12-09    16:07:43.9370000