【问题标题】:Converting date formats after executing stored procedure via Powershell?通过Powershell执行存储过程后转换日期格式?
【发布时间】: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


【解决方案1】:

虽然我没有找到我想要的确切内容,但我们使用了一种解决方法,将 SQL Server 中的日期字段转换为字符串,这似乎对我们有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-30
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多