SQL Server:具有两个表的方案

时间:2017-07-26 00:36:39

标签: sql sql-server

我是SQL Server和学习的新手。我遇到了一个问题。这是我的问题的情景。

有2个表,一个是Addresses,另一个是Members

以前,我有两列收集Addresses的日期,一个是月份,另一个是一年。

但是最近我们决定添加另外两列来收集这种日期格式(mm / dd / yyyy),而不是插入另一个数据。我想使用2个旧日期列中的旧数据,即月份和年份。并使用ID表和Members表中的标识Address,即G1,G2,G3。此标识ID是主键。

我决定手动完成,但我意识到我们获得了大量数据,如果我一个接一个地完成它将需要永远完成。知道我该怎么做?我正在使用Microsoft SQL Server Management Studio。

所以基本上应该是这样的。

  • 月份列= 6月
  • 年专栏= 2015
  • FullDate Column = 06/01/2015

所有G1应该是这样的

1 个答案:

答案 0 :(得分:0)

给出像

这样的表格
create table dbo.Addresses
(
    MonthColumn varchar(30),
    YearColumn int
)

您可以向表中添加计算列。由于您将月份作为名称,您最好的选择可能是将日期作为字符串连接,然后将其转换为日期(注意,如果它是整数,则可以使用dateadd()或,如果您正在运行SQL 2012或更近期的datefromparts()

alter table dbo.addresses
add MonthYear as convert(date, '01 ' + MonthColumn + ' ' + cast(YearColumn as char(4)), 106) -- 106 is the mask for "dd mon yyyy"

这确实依赖于标准日期名称的月份。同样,如果您能够将月份存储为整数,那么生活将变得更加容易。但事实上,这就是我接近它的方式。