SQL Server日期从特定格式转换为不同的确切日期格式

时间:2016-11-29 10:36:12

标签: sql-server c#-4.0 datetime-format

我有一个特别的情况,我无法弄明白。

我在SQL表中有一个字段,该字段以下列格式保存为DATETIME:

path <- "C:/Users/Thomas/Desktop/tapping backup/Pilot141116/pilot_151116_pat1_250/realisations/participant_8/Trial1"

setwd( path )
files <- list.files(path = path, pattern = "midi.*\\.csv", full.names = T )

# set up a function to read a file and add a column for filename
import <- function( file ) {
  df <- read_csv( file, col_names = T )
  df$file <- file
  return( df )
}

# run that function across all files.
data1 <- ldply( .data = files, .fun = import )

这一切都很好,除了我需要2016-11-26 00:00:00 格式。

我不想在SQL中使用dd/MM/yyyy函数,因为我需要DATE格式,而不是STRING格式。

我使用EPPlus库将结果DataTable导出到Excel,我需要以这种格式导出导出中的日期字段。

我试过了:

  • CONVERT(VARCHAR(10), @dateField, 103)以及将其转换回DATE类型。它仍然隐式转换为VARCHAR或NVARCHAR
  • 将@dateField投射到DATE和SMALLDATETIME
  • 使用C#尝试将其转换为正确格式的日期。 FORMAT(@dateField, 'dd/MM/yyyy', 'en-gb')
  • EPPlus列格式:DateTime.ParseExact(dataTable.Rows[i]["DateField"].ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture);

我的转换选项用完了,因为我没有尝试使用DateTime格式。我所采用的每条路径都将我的值转换回字符串。任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

如果它是日期时间列,则将其保存为日期的二进制表示;只有在管理工作室等客户端应用程序中呈现时,它才会以某种格式呈现。

因此,如果您需要特定格式,则表示以该格式呈现为字符串。保存回数据库时,您始终可以转换回日期时间(并且应该!)。例如,您可能希望在保存之前从日期时间修剪时间部分。