如何获取azure存储表的时间戳作为字符串?
问题描述:
我可以用这个PowerShell命令获取存储表行:如何获取azure存储表的时间戳作为字符串?
$temp_table_name = "MY_TABLE_NAME"
$saContext = (Get-AzureRmStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccount).Context
$temp_table = Get-AzureStorageTable -Name $temp_table_name -Context $saContext
$result = Get-AzureStorageTableRowAll -table $temp_table
我在我的表中的两个时间戳,一个是天蓝色的表本身的名称Timestamp
,另一种是用于度量(自动存储)与名TIMESTAMP
。那么$result[0]
的结果就像波纹管:
Average : 3228132966.4
Count : 240
CounterName : \Memory\AvailableMemory
DeploymentId : 2c90752b-100f-4640-a056-e2b894bf5bd5
Host : cpuusagetest
Last : 3230662656
Maximum : 3231711232
Minimum : 3225419776
TIMESTAMP : 10/16/2017 10:00:00 PM
Total : 774751911936
PartitionKey : *************
RowKey : ***************__:005CMemory:005CAvailableMemory
Etag : W/"datetime'2017-10-16T23%3A00%3A05.5000867Z'"
我不知道为什么会出现只是TIMESTAMP
,另一种是Etag
!在结果中。反正我可以使用这个命令来获得时间戳:
$result[0].Timestamp
它总是会返回一个字符串如10/16/2017 23:00:00
,但在表的行它的储存像2017-10-16T23:30:00.000
。我需要获得存储在存储表中的格式。
我试图改变使用这样的命令格式:
[String]$result[0].Timestamp
or
$result[$j].Timestamp.toString("s")
但结果是一样的。
请注意,当我使用$result[$j].Timestamp.GetType().FullName
结果是System.DateTime
,然后在我的表中的 timestamp属性的类型是DateTime
,我不能(不愿)去改变它。
以上就是我的Azure存储资源管理器的截图是表明我有我的时间戳
但分&二&毫秒,当我使用这个命令:
$result[$j].Timestamp.toString("s")
结果是不小号和秒...
我甚至测试这些命令太:
"{0:MM/dd/yyyy hh:mm:ss}" -f $result[$j].Timestamp
但结果是类似10/16/2017 10:00:00
你能指导我吗?
答
提供DateTime类型d,命令d.ToString(“S”)的任何对象将归还的日期对象在格式2017-10-16T23:30:00.000
如果有一个字符串和需要将其转换为datetime,下面将不同格式的日期字符串之间进行转换:
[DateTime]::Parse("10/16/2017 23:00:00").ToString("s")
通过上述评价为“2017-10-16T23:30:00.000”
是的,这改变格式,但我会失去细分,秒和毫秒,因为当我得到信息从存储表中删除,它会改变格式,它会删除这些东西!当我将它解析为字符串时,它将被删除...:( –
不知道为什么你认为它会删除分钟和秒 - 如果内部存储类型是一个DateTime,那么一个ToString(“s”)'会以“格式相同的格式返回那个行的时间戳存储“(作为一个旁路 - 如果'$ result [0] .TIMESTAMP'已经是'DateTime',不需要解析 - 只是'ToString()'它)也就是说,也许你需要告诉我们为什么你需要将它转换为字符串,以及你在做什么 - 可能有其他解决方案来解决你想要解决的问题 –
@BrendanGreen我已经添加了一些信息,我需要这个时间戳,因为它是系统的指标它们自动存储在Azure存储表中,同一时间戳(如CPU,内存,网络等)有几种度量类型,我需要将同一时间戳的所有分隔的度量行合并到一行,将它存储到另一个表中。 –