我有一个表,日期和时间分别给出,时间以int格式给出。我必须以日期时间格式合并日期和时间列,如dd:mm:yyy hh:mm:ss.this合并值应插入" MergeDT"列是必需的输出。 我已经在MergeDT专栏中提到了输出。
ID | DATE_TAKEN | TIME | MergeDT |
----------------------------------------------------------------------
1 | 2005-08-01 00:00:00 | 702 | 2005-08-01 07:02:00 |
----------------------------------------------------------------------
2 | 2005-08-01 00:00:00 | 702 | 2005-08-01 07:02:00 |
----------------------------------------------------------------------
3 | 2005-08-01 00:00:00 | 702 | 2005-08-01 07:02:00 |
-----------------------------------------------------------------------
4 | 2003-01-22 00:00:00 | 1603 | 2003-01-22 16:03:00 |
-----------------------------------------------------------------------
5 | 2005-08-01 00:00:00 | 702 | 2005-08-01 07:02:00 |
-----------------------------------------------------------------------
6 | 2005-08-01 00:00:00 | 3 | 2005-08-01 00:03:00 |
-----------------------------------------------------------------------
7 | 2005-08-01 00:00:00 | 504 | 2005-08-01 05:04:00 |
-----------------------------------------------------------------------
8 | 2003-01-22 00:00:00 | 1646 | 2003-01-22 00:00:00 |
-----------------------------------------------------------------------
答案 0 :(得分:2)
应该是这样的:
const string FirstNamespaceUri = "firstdefaultnamespace";
const string SecondNamespaceUri = "seconddefaultnamespace";
XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("ns1", FirstNamespaceUri);
ns.AddNamespace("ns2", SecondNamespaceUri);
XmlNode customizedNode = doc.CreateElement("CustomizedField", SecondNamespaceUri);
XmlNode keyNode = doc.CreateElement("Key", SecondNamespaceUri);
XmlNode dataNode = doc.CreateElement("DataType", SecondNamespaceUri);
XmlNode valueNode = doc.CreateElement("Value", SecondNamespaceUri);
keyNode.InnerText = "hi";
dataNode.InnerText = "hello";
valueNode.InnerText = "bye";
customizedNode.AppendChild(keyNode);
customizedNode.AppendChild(dataNode);
customizedNode.AppendChild(valueNode);
doc.DocumentElement.SelectSingleNode("ns1:Body/ns2:UniversalShipment/ns2:Shipment/ns2:CustomizedFieldCollection", ns).AppendChild(customizedNode);
Re:混淆数据和表示。 SQL Server中的日期时间数据类型以紧凑的二进制表示形式存储数据。他们不存储任何格式信息。我不认为有人会对以下内容感到惊讶:
UPDATE UnnamedTable SET MergeDT = DATEADD(hour, [time] / 100,
DATEADD(minute,[time] % 100,DATE_TAKEN))
打印declare @t int
set @t = 0x0D
print @t
而不是13
,然而人们似乎永远感到惊讶的是,相同的逻辑适用于日期时间类型 - 他们将数据存储在一个格式一致,而不是存储用于设置其值的字符串表示。
答案 1 :(得分:0)
将整数格式(通常为秒)的时间转换为sql server中的时间如下。
declare @t int
set @t = 110
select cast((@t / 60) as varchar(2)) + ':' + cast((@t % 60) as varchar(2))
答案 2 :(得分:0)
如果我理解了相关内容你需要这样的东西:
SELECT CONVERT( DATETime, SUBSTRING(DATE_TAKEN, 0, 10) + ' ' + select cast(([TIME] / 100) as varchar(2)) + ':' + cast(([TIME] % 100) as varchar(2)) + ':00')