我正在使用无法更改的数据库结构 - 在SQL Server 2005环境中。有两个字段 - 一个完整的日期时间字段和一个HHMM字段。需要从单独的HHMM字段“构建”一个日期时间字段
软件应用程序并不总是填充这两个字段,所以我需要创建一个完整的日期时间字段。如果日期时间字段的小时分秒部分为零,那么我需要从日期时间字段的日期部分,HHMM字段的小时数,HHMM的分钟数创建完整的日期时间字段和零秒。
我该怎么做?
我正在使用无法更改的数据库结构 - 在SQL Server 2005环境中。有两个字段 - 一个完整的日期时间字段和一个HHMM字段。需要从单独的HHMM字段“构建”一个日期时间字段
软件应用程序并不总是填充这两个字段,所以我需要创建一个完整的日期时间字段。如果日期时间字段的小时分秒部分为零,那么我需要从日期时间字段的日期部分,HHMM字段的小时数,HHMM的分钟数创建完整的日期时间字段和零秒。
我该怎么做?
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变量插入数据库。
如果您让我知道您的语言,我可能会告诉您一些注意事项,因为在跨平台的日期/时间工作时总会有“陷阱”。
更新所有有没有时间部分的日期时间值,随着时间的部分从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:00
或00:05
(其将被分别存储,作为800
和5
)。因此,在插入冒号之前,我们需要将该值带到格式为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)
你试图做到这一点的SQL?如果有,你有什么权限?什么时候将日期/时间设置为空时?似乎你将不得不补充一个日期/时间,这不会让我觉得有用。 – bendemes 2011-03-28 13:34:26
那么,你在用什么语言?当然,您可以选择零小时和分钟的所有条目,相关的HHMM条目,然后进行更新。 – Olli 2011-03-28 13:35:11