2011-03-28 54 views
0

我正在使用无法更改的数据库结构 - 在SQL Server 2005环境中。有两个字段 - 一个完整的日期时间字段和一个HHMM字段。需要从单独的HHMM字段“构建”一个日期时间字段

软件应用程序并不总是填充这两个字段,所以我需要创建一个完整的日期时间字段。如果日期时间字段的小时分秒部分为零,那么我需要从日期时间字段的日期部分,HHMM字段的小时数,HHMM的分钟数创建完整的日期时间字段和零秒。

我该怎么做?

+0

你试图做到这一点的SQL?如果有,你有什么权限?什么时候将日期/时间设置为空时?似乎你将不得不补充一个日期/时间,这不会让我觉得有用。 – bendemes 2011-03-28 13:34:26

+0

那么,你在用什么语言?当然,您可以选择零小时和分钟的所有条目,相关的HHMM条目,然后进行更新。 – Olli 2011-03-28 13:35:11

回答

0

Cythia:

您使用哪种编程语言?您可能想要查找像createDate()或createDateTime()这样的函数,它通常接受字符串输入和格式掩码。你可能也会有像Now()和Today()这样的函数,它会根据当前时间生成一个时间变量。如果您使用的语言是严格键入的,则可能必须使用类似ConvertToString()或AsString()的函数。当然,所有这些函数名称在语言和语言之间都会有很大差异。

所以这里有点一步一步 1.获取您的初始日期时间变量 2.创建一个新的日期变量(即指明MyDate),并使用DateFormatFunction(设置),在只返回日期(MM/DD/YYYY) 3.创建一个新的时间变量(即MYTIME),并使用TimeFormatFunction()以TimeFormatFunction()方式返回您想要的掩码指定的格式(即HH:MM:SS) 4.检查MYTIME是否为00:00:00。 5.如果是,则创建一个新的时间变量(即MYTIMENOW),并使用类似Now(“HH:MM:SS”)的方式将其设置为当前时间,并使用适当的掩码。 6.现在,根据日期在MS SQL中的格式,您需要创建一个新的DateTime变量(即MYDATETIME)并使用CreateDateTime(“MYDATE MYTIME”)函数创建一个正确的日期格式,该函数允许您相应地掩盖它。 7.将生成的MYDATETIME变量插入数据库。

如果您让我知道您的语言,我可能会告诉您一些注意事项,因为在跨平台的日期/时间工作时总会有“陷阱”。

+0

我最终必须用其他语言编写公式,但现在我正在使用SQLserver2005创建一个完整的日期时间字段。我真的不明白你对getdate/now的引用。我必须使用现有表中的两个现有字段,日期时间字段和HHMM字段来创建“完整”日期时间字段。 – Cynthia 2011-03-28 15:17:04

+0

软件应用程序(现成的)无法正确填充日期时间字段。有时,“时间”保存在日期时间字段中,有时“时间”保存在HHMM字段中。在我的报告中,我必须展示一个完整的日期时间字段。 – Cynthia 2011-03-28 15:40:46

1

更新所有有没有时间部分的日期时间值,随着时间的部分从HHMM

UPDATE atable 
SET DateTime = DateTime + STUFF(HHMM, 3, 0, ':') 
WHERE DateTime = DATEADD(day, DATEDIFF(day, 0, DateTime), 0) 

假设的HHMM列是固定格式的字符串,即你总是在HHMM中有2位小时和2位数的分钟,如'1400''0825'。该查询在时间部分之间插入:,并将结果时间(表示为字符串)添加到日期时间列值。


如果HHMM是整数,它可以缺少前导零点或零为倍像08:0000:05(其将被分别存储,作为8005)。因此,在插入冒号之前,我们需要将该值带到格式为HHMM的字符串,例如,像这样:

RIGHT(10000 + HHMM, 4) 

现在我们可以这样表达过上述查询:

UPDATE atable 
SET DateTime = DateTime + STUFF(RIGHT(10000 + HHMM, 4), 3, 0, ':') 
WHERE DateTime = DATEADD(day, DATEDIFF(day, 0, DateTime), 0) 
相关问题