【发布时间】:2020-08-30 08:55:25
【问题描述】:
我是 Poweshell 的新手,我编写了一个脚本,将 SQL 选择的结果导出到 csv。但是,我有两列的日期格式为 mm-dd-yyyy,我希望它的格式为 yyyy-MM-dd HH:mm:ss.fff。我只能转换一列,而在另一列中我找不到转换方法。
有人可以帮我转换两列吗?
#Connect to SQL and run QUERY
$SQLServer = "xxxx"
$SQLDBName = "xxxx"
$SQLUsername = "xxxx"
$SQLPassword = "nxxx"
$OuputFile = "c:\SQL_Export.csv"
$SqlQuery = "SELECT
rtrim(HANDLE) as Handle,
rtrim(EMPRESA) as Empresa,
rtrim(FILIAL) as Filial,
rtrim(OPERACAO) as Operacao,
rtrim(PESSOA) as Pessoa,
rtrim(dataemissao) as Dataemissao,
rtrim(documentodigitado) as Documentodigitado,
rtrim(dataultimaliq) as Dataultimaliq,
rtrim(ehprevisao) as Ehprevisao,
rtrim(status) as Status,
rtrim(entradasaida) as Entradasaida
FROM [$SQLDBName].[dbo].[FN_DOCUMENTOS]
where DATAULTIMALIQ >= '20200101'
ORDER BY handle ASC"
##Delete the output file if it already exists
If (Test-Path $OuputFile ){
Remove-Item $OuputFile
}
Write-Host "INFO: Exporting data from $SQLDBName to $OuputFile" -foregroundcolor white -backgroundcolor blue
## - Connect to SQL Server using non-SMO class 'System.Data':
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; User ID = $SQLUsername; Password = $SQLPassword"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
#Output RESULTS to CSV
$DataSet.Tables[0] | select-Object -ExcludeProperty Dataemissao @{Name="Dataemissao";Expression={([datetime]$_.Dataemissao).ToString("yyyy-MM-dd HH:mm:ss.fff")}}, * | Export-Csv $OuputFile
(Get-Content $OuputFile) | Foreach-Object {$_ -replace '"', ""} | Set-Content $OuputFile -Encoding `UTF8`
我需要转换的列是“Dataemissao”和“Dataultimaliq”
【问题讨论】:
-
请告诉我们另一个日期字段是什么以及它当前要转换的格式是什么样的。由于字段名称都是葡萄牙语(?)我看不懂..
-
感谢您的帮助。是的,这些字段是葡萄牙语的。我需要转换以下字段:“Dataemissao”和“Dataultimaliq”
-
CSV文件中的日期格式如下:Feb 12 2020 12:00 AM,但是我想来02.12.2020 12:00:00.000
-
在这一行
select-Object -ExcludeProperty Dataemissao @ {Name = "Dataemissao"; Expression = {([datetime] $ _. Dataemissao) .ToString ("yyyy-MM-dd HH: mm: ss.fff")}}我转换了字段“Dataemissao”但是,我尝试了一些方法来对字段“Dataultimaliq”做同样的事情,但没有成功。 -
刚接触 SO 你可能不知道这一点,但习惯于点击左侧的 ✓ 图标 accept the answer that solved your problem。这将有助于其他有类似问题的人更轻松地找到它,并有助于激发人们回答您的问题。
标签: sql powershell csv