C# 如何使用oracle将日期转换为GMT格式

C# 如何使用oracle将日期转换为GMT格式,c#,oracle,C#,Oracle,我想将用户选择的日期转换为GMT格式并存储在DB中 查询: select cast('7/1/2015 12:00:00 AM' as timestamp) AT TIME ZONE 'GMT' from dual 将引发以下错误: ORA-01843: not a valid month 01843. 00000 - "not a valid month" 当月份被称为一月时,查询工作正常。但是我没有在其中找到任何GMT转换。类似地,如何在不更改hh:mm:ss的情况下将月份更改为MMM

我想将用户选择的日期转换为GMT格式并存储在DB中

查询:

select cast('7/1/2015 12:00:00 AM' as timestamp) AT TIME ZONE 'GMT' from dual
将引发以下错误:

ORA-01843: not a valid month
01843. 00000 -  "not a valid month"
当月份被称为一月时,查询工作正常。但是我没有在其中找到任何GMT转换。类似地,如何在不更改hh:mm:ss的情况下将月份更改为MMM。请帮忙试试

select cast(to_date('7/1/2015 12:00:00 AM','mm/dd/yyyy hh:mi:ss AM') as timestamp) AT TIME ZONE 'GMT' from dual
试一试

试一试

试一试


这和C有什么关系?是否有任何理由需要将值作为文本而不是时间戳值发送到Oracle?还要注意的是,GMT不是一种“格式”——它是一个时区。(嗯,有点像。我自己会使用UTC,严格来说它也不是一个时区,而是一个类似时区的参考框架。)@Jon Skeet:提到C#因为我发现java提供了很少的转换为时间戳的方法,我不明白你的意思。如果您的意思是“我从C#代码发送这个字符串”,那么最好的解决方案是在C#中执行转换(到DateTimeOffset或DateTime),然后使用参数化SQL在查询中发送该值。但是你没有给我们足够的背景来解释你在做什么。这和C有什么关系?是否有任何理由需要将值作为文本而不是时间戳值发送到Oracle?还要注意的是,GMT不是一种“格式”——它是一个时区。(嗯,有点像。我自己会使用UTC,严格来说它也不是一个时区,而是一个类似时区的参考框架。)@Jon Skeet:提到C#因为我发现java提供了很少的转换为时间戳的方法,我不明白你的意思。如果您的意思是“我从C#代码发送这个字符串”,那么最好的解决方案是在C#中执行转换(到DateTimeOffset或DateTime),然后使用参数化SQL在查询中发送该值。但是你没有给我们足够的背景来解释你在做什么。这和C有什么关系?是否有任何理由需要将值作为文本而不是时间戳值发送到Oracle?还要注意的是,GMT不是一种“格式”——它是一个时区。(嗯,有点像。我自己会使用UTC,严格来说它也不是一个时区,而是一个类似时区的参考框架。)@Jon Skeet:提到C#因为我发现java提供了很少的转换为时间戳的方法,我不明白你的意思。如果您的意思是“我从C#代码发送这个字符串”,那么最好的解决方案是在C#中执行转换(到DateTimeOffset或DateTime),然后使用参数化SQL在查询中发送该值。但是你没有给我们足够的背景来解释你在做什么。这和C有什么关系?是否有任何理由需要将值作为文本而不是时间戳值发送到Oracle?还要注意的是,GMT不是一种“格式”——它是一个时区。(嗯,有点像。我自己会使用UTC,严格来说它也不是一个时区,而是一个类似时区的参考框架。)@Jon Skeet:提到C#因为我发现java提供了很少的转换为时间戳的方法,我不明白你的意思。如果您的意思是“我从C#代码发送这个字符串”,那么最好的解决方案是在C#中执行转换(到DateTimeOffset或DateTime),然后使用参数化SQL在查询中发送该值。但是你没有给我们足够的背景来解释你在做什么。