需要从单独的HHMM字段“构建”日期时间字段

时间:2011-03-28 13:30:27

标签: sql-server-2005

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

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

我该怎么做?

2 个答案:

答案 0 :(得分: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之类的前导零或零(它们将分别存储为800和{{1} })。因此,在插入冒号之前,我们需要将值设置为格式为5的字符串,例如像这样:

HHMM

现在我们可以将此表达式传递给上面的查询:

RIGHT(10000 + HHMM, 4)

答案 1 :(得分:0)

Cythia:

您使用的是哪种编程语言?您可能希望查找createDate()或createDateTime()等函数,它通常接受字符串输入和格式掩码。您可能还会有Now()和Today()等函数,它们将根据当前时间生成时间变量。如果您使用的语言是严格键入的,则可能必须使用ConvertToString()或AsString()等函数。当然,所有这些函数名称因语言而异。

所以这里有一点一步一步 1.获取初始dateTime变量 2.创建一个新的日期变量(即MYDATE),并使用DateFormatFunction()设置它,该DateFormatFunction()仅返回您希望由掩码指定的格式的日期(即MM / DD / YYYY) 3.创建一个新的时间变量(即MYTIME),并使用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变量插入数据库。

如果你让我知道你的语言,我或许可以告诉你一些注意事项,因为在跨平台处理日期/时间时总会有“陷阱”。