我使用SQL查询2列 - 第1列只有数字,第2列是日期。但是第1列的值也是日期,但没有“:”和空格(非日期格式)。
我需要数据表中的第3列,它给出了第1次和第2次之间的区别。
你能告诉我如何继续吗?我尝试手动添加“:”,我无法更改SQL数据库 - 只读取并输入到数据表中。
SqlDataAdapter test = new SqlDataAdapter(query, con2);
test.Fill(dt);
dt.Columns.Add("Real", typeof(int));
dt.Columns["Real"].SetOrdinal(5);
DataTable distinctTable = dt.DefaultView.ToTable( /*distinct*/ true);
dataGridView1.DataSource = distinctTable;
distinctTable.Columns["Real"].SetOrdinal(5);
this.dataGridView1.Columns["Column1"].Visible = false;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
int a = 0;
foreach (DataRow d in distinctTable.Rows)
{
try
{
DateTime da = DateTime.ParseExact(dataGridView1.Rows[a].Cells["Real"].Value.ToString(), "yyyy-dd-MM hh:mm", System.Globalization.CultureInfo.InvariantCulture);
d["Real"] = da;
++a;
}
catch (Exception)
{
++a;
continue;
}
}
示例表:
Column1 Column2
_______________|____________________
20170707060713 | 2017-07-07 06:13:43
20170707061326 | 2017-07-07 06:21:16
20170707062059 | 2017-07-07 06:28:54
20170707062837 | 2017-07-07 06:36:22
20170707063605 | 2017-07-07 06:43:50
20170707064333 | 2017-07-07 06:51:08
答案 0 :(得分:1)
以下SQL查询将numeric(bigint)列转换为SQL DateTime格式,并计算两个日期之间的差异:
DECLARE @Test table(num bigint, dte datetime);
INSERT INTO @Test(num, dte) VALUES(20170707060713, '2017-07-05 18:36:58')
SELECT num,
dte,
DATEDIFF(hour, dte, convert(DATETIME, substring(CAST(num AS NVARCHAR), 0, 9)
+' '+substring(CAST(num AS NVARCHAR), 9, 2)
+':'+substring(CAST(num AS NVARCHAR), 11, 2)
+':'+substring(CAST(num AS NVARCHAR), 13, 2))) AS dteFromNum
from @Test;