在日期为 04-DEC-20 的 oracle db 格式中,同时在控制台中显示日期显示为 04-09-2020

时间:2020-12-19 10:24:29

标签: c# sql oracle datetime

我需要获取表(oracle db)中项目的最后修改日期。 修改日期为 db 格式=04-DEC-20 在控制台中显示修改日期=04-09-2020

获取修改日期的c#代码

             string connString =DBUtils.GetDBConnection();
      
                        
            OracleConnection conn = new OracleConnection();

            conn.ConnectionString = connString;

            string sql = "select LASTMODIFIED , name from v_vname where name in('hector')";
            OracleCommand cmd = new OracleCommand();


           
                // Set connection for command.
                cmd.Connection = conn;
                cmd.CommandText = sql;
                conn.Open();
        using (DbDataReader reader = cmd.ExecuteReader())
        {
            if (reader.HasRows)
            {

                while (reader.Read())
                {
                    
                    int date = reader.GetOrdinal("LASTMODIFIED"); // 0

                    var LASTmTime = reader.GetValue(0);
                 Console.WriteLine("modifieddate:" + LASTmTime);
                  }
              }
         }

3 个答案:

答案 0 :(得分:0)

在 Oracle 中,您可以使用 function download_images(){ global $db; if ( $query = $db->get_results("SELECT `id`,`title`,`url_image` FROM table") ){ foreach ( $query as $data ){ $local_path_image = "folder/" .slugify($data->title) . "-img-" .$data->id . ".png"; if (file_exists($local_path_image)) { /* if exist, do nothing */ echo $local_path_image . ' already exist' . PHP_EOL; } else if ( !file_exists($local_path_image)) { /* if doesn't exist, call save_image */ save_image($data->url_image, ABSPATH . $local_path_image); echo $local_path_image . ' was added' . PHP_EOL; } else { /* nothing */ } } } else { echo "No data found."; } } date 格式化为字符串:

to_char()

旁注:select to_char(lastmodified, 'dd-mm-yyyy') as last_modified, name from v_vname where name = 'hector' 是更简单的短语 name in ('hector')

答案 1 :(得分:0)

在 C# 中使用 .ToString("dd-MM-yyyy") 很优雅

while (reader.Read())
{
    int date = reader.GetOrdinal("LASTMODIFIED"); // 0
    var LASTmTime = reader.GetValue(0).ToString("dd-MM-yyyy");
    Console.WriteLine("modifieddate:" + LASTmTime);
}

答案 2 :(得分:0)

Oracle 中的

DATE 数据类型值是二进制值 consisting of 7-bytes(始终是世纪、世纪年、月、日、小时、分钟和秒)。

当您说格式为 DD-MON-RR 时,您看到的是您使用的用户界面,将二进制值格式化为您(用户)会理解的内容,并且对于 SQL/Plus(以及 SQL 开发人员和其他人) ) 这将基于 NLS_DATE_FORMAT 会话参数,而 default NLS_DATE_FORMAT value 取决于您在设置数据库时使用的区域。

您需要做的是输出 DATE 根据您的要求格式化的字符串表示。您可以在 SQL 中执行此操作并使用 TO_CHAR 来格式化字符串:

SELECT TO_CHAR( LASTMODIFIED, 'DD-MM-YYYY' ) AS last_modified,
       name
FROM   v_vname
WHERE  name = 'hector'

could do it in C#

DateTime LASTmTime = reader.GetValue(0);
Console.WriteLine("modifieddate:" + LASTmTime.toString("dd-MM-yyyy"));