C# 从DateTime转换为时间戳

C# 从DateTime转换为时间戳,c#,sql,C#,Sql,我正在尝试将DateTime变量转换为Timestamp。我的变量的当前格式为:1/23/17 2:14:31 PM,我希望它是TimeStamp,这样我就可以将它用于Oracle SQL Developer。例如:2017年1月23日下午2.14.31.000000000点 我试着这样转换它: DateTime d = DateTime.Now.AddDays(-31); Console.WriteLine(d.ToUniversalTime().ToString("O")); 但输出与时间

我正在尝试将
DateTime
变量转换为
Timestamp
。我的变量的当前格式为:
1/23/17 2:14:31 PM
,我希望它是
TimeStamp
,这样我就可以将它用于Oracle SQL Developer。例如:
2017年1月23日下午2.14.31.000000000点

我试着这样转换它:

DateTime d = DateTime.Now.AddDays(-31);
Console.WriteLine(d.ToUniversalTime().ToString("O"));
但输出与时间戳不同:

2017-01-23T14:14:31.5838355Z
试试这个

DateTime d = DateTime.Now.AddDays(-31);
Console.WriteLine(d.ToUniversalTime().ToString("hh-MMM-yy hh.mm.ss.ffffff tt"));
试试这个

DateTime d = DateTime.Now.AddDays(-31);
Console.WriteLine(d.ToUniversalTime().ToString("hh-MMM-yy hh.mm.ss.ffffff tt"));
试试这个:

DateTime d = DateTime.Now.AddDays(-31);
long epoch = (d.Ticks - 621355968000000000) / 10000000;
Console.WriteLine(d.ToUniversalTime().ToString("dd-MMM-yy HH:mm:ss") + ":" + epoch);
试试这个:

DateTime d = DateTime.Now.AddDays(-31);
long epoch = (d.Ticks - 621355968000000000) / 10000000;
Console.WriteLine(d.ToUniversalTime().ToString("dd-MMM-yy HH:mm:ss") + ":" + epoch);

你为什么不能为你的SQL使用一个固定的日期时间?数据库的创建人用这种格式创建了列时间戳,我不能更改它。看和,其中一个应该回答你的问题。您可能还想检查管理您的连接的对象是否会自动为您进行转换。非常感谢@Chris,它确实解决了我的问题。在显示的代码中,
new DateTime()
没有使用,应该删除(以提高可读性).你为什么不能为你的SQL使用一个固定的日期时间?创建数据库的人用这种格式创建了列时间戳,我不能更改它。看和,其中一个应该回答你的问题。您可能还想检查管理您的连接的对象是否会自动为您进行转换。非常感谢@Chris,这确实解决了我的问题。在显示的代码中,
new DateTime()
没有使用,应该删除(以提高可读性)。月份“PM”指示符可能取决于区域性,例如,使用
“es es”
(西班牙语(西班牙))可以获得
“23 ene.-17 02.14.31.000000000”
Jan
ene.
,并且
PM
不算什么。)“PM”指示符处的月份可能取决于区域性,例如使用
“es es”
(西班牙语(西班牙))可以获得
“23 ene.-17 02.14.31.000000000”
Jan
ene.
,而
PM
什么都不是)。您的
epoch
似乎是自1970年初以来的“Unix”第二次计数。相关性是什么?如果需要,考虑使用<代码>长EngCH =((DATETMEOBACK)D).TunixTimeSeEthSDS();<代码>更容易阅读。您的
epoch
似乎是自1970年初以来的“Unix”第二次计数。相关性是什么?如果需要,考虑使用<代码>长EngCH =((DATETMEOBACK)D).TunixTimeSeEthSDS();<代码>更容易阅读。