【发布时间】:2020-03-31 15:32:52
【问题描述】:
我在这里遇到了一个奇怪的问题。我们在 MS SQL Server 中有几个存储过程。当我们通过 Management Studio 执行这些过程时,我们看到这个特定的列被输出为一个日期。当我们通过 Powershell 执行存储过程并将内容填充到文本文件中时,该值显示为 DateTime。我们想从该列中删除时间,以便它只显示日期。
为什么在通过 Powershell 执行时列的值显示为 DateTime,但在通过 Management Studio 运行过程时却没有,如何通过 Powershell 转换该值?
编辑:
这是我正在使用的代码:
Invoke-Sqlcmd -ServerInstance "xxx" -Database "xxx" -Query "xxx" -Username "xxx" -Password "xxx" -QueryTimeout 600 | Export-Csv -NoTypeInformation -delimiter "`t" -Path $myFilePath
gc $myFilePath | % {$_ -replace '"', ""} | out-file $myCompanyFile -Fo -En ascii
EDIT2:
在 SQL Server 中,我们将日期字段转换为字符串,这对我们有用。
【问题讨论】:
-
日期的格式完全由表示层控制。似乎在这里你没有定义格式,所以你得到了你正在使用的默认格式。 Powershell 使用.Net 数据类型,它只有一个
DateTime数据类型(没有date),因此你的date列将被Powershell 视为DateTime,因此它还显示了一个时间部分. -
总猜测,但您可能会使用
ToString函数和格式yyyyMMdd来解决这个问题。猜猜,因为我们没有您提供的 PowerShell 脚本来显示您在做什么。 -
完全正确 - 我打算添加一个提醒,没有人可以看到您的屏幕。您必须在问题中提供足够的信息。
-
这很有趣。我正在使用 PowerShell 5 顺便说一句。执行存储过程后,结果以“csv”的形式出现在我面前。知道如何遍历特定列并仅更改该列中值的格式吗?我将正在运行的代码添加到问题中。
标签: sql-server windows powershell