Functions/Columns/New-DateTimeColumn.ps1
function New-DateTimeColumn { <# .SYNOPSIS Creates a column object representing an DateTime datatype. .DESCRIPTION Use this function in the `Column` script block for `Add-Table`: Add-Table 'Orders' { DateTime 'OrderedAt' } ## ALIASES * DateTime .EXAMPLE Add-Table 'Orers' { DateTime 'OrderedAt' } Demonstrates how to create an optional `datetime` column. .EXAMPLE Add-Table 'Orders' { DateTime 'OrderedAt' 5 -NotNull } Demonstrates how to create a required `datetime` column with 5 digits of fractional seconds precision. .EXAMPLE Add-Table 'Orders' { DateTime 'OrderedAt' -Sparse } Demonstrate show to create a nullable, sparse `datetime` column when adding a new table. .EXAMPLE Add-Table 'Orders' { DateTime 'OrderedAt' -NotNull -Default 'getutcdate()' } Demonstrates how to create a `datetime` column with a default value. You only use UTC dates, right? .EXAMPLE Add-Table 'Orders' { DateTime 'OrderedAt' -NotNull -Description 'The time the record was created.' } Demonstrates how to create a `datetime` column with a description. #> [CmdletBinding(DefaultParameterSetName='Nullable')] param( [Parameter(Mandatory=$true,Position=0)] [string] # The column's name. $Name, [Parameter(Mandatory=$true,ParameterSetName='NotNull')] [Switch] # Don't allow `NULL` values in this column. $NotNull, [Parameter(ParameterSetName='Nullable')] [Switch] # Store nulls as Sparse. $Sparse, [Parameter()] [string] # A SQL Server expression for the column's default value $Default, [Parameter()] [string] # A description of the column. $Description ) if ($PsCmdlet.ParameterSetName -eq 'Nullable') { if ($Sparse) { New-Column -Name $Name -DataType 'datetime' -Sparse -Default $Default -Description $Description } else { New-Column -Name $Name -DataType 'datetime' -Default $Default -Description $Description } } elseif ($PsCmdlet.ParameterSetName -eq 'NotNull') { New-Column -Name $Name -DataType 'datetime' -NotNull -Default $Default -Description $Description } } Set-Alias -Name 'DateTime' -Value 'New-DateTimeColumn' |