sql - 强制 DATEPART 以固定长度输出的简单方法?

标签 sql sql-server ssis

例如,当我执行 DATEPART(mm, GETDATE()) 操作时,我得到的结果是 8 月的“8”。如果我在 12 月做同样的事情,我会得到“12”。这是两个不同长度的结果。

有没有办法让 DATEPART 结果始终为固定长度?例如,月份将显示为 08 或 12。天数将显示为 05 和 30。

更多详细信息:

我在 SSIS 中使用派生列转换来获取服务器日期戳,并删除所有格式(空格、冒号、破折号等),以便将其用作主键的一部分。

我目前有效的论坛如下,但它会导致长度可变的结果,这并不理想。我希望所有结果都具有相同的长度。

((DT_STR,4,1252)DATEPART("yyyy",createDate)) + ((DT_STR,2,1252)DATEPART("mm",createDate)) + ((DT_STR,2,1252)DATEPART("dd",createDate)) + ((DT_STR,2,1252)DATEPART("hh",createDate)) + ((DT_STR,2,1252)DATEPART("mi",createDate)) + ((DT_STR,2,1252)DATEPART("ss",createDate)) + ((DT_STR,2,1252)DATEPART("ms",createDate))

输入如下所示:

9/11/2008 8:50:47:300 PM

结果如下:

20089112050473

结果应如下所示:

20080911205047300

最佳答案

SELECT RIGHT(100+DATEPART(mm, GETDATE()),2)

根据新信息进行编辑 - 获取固定数字字符串的时间戳:

SELECT REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(varchar(23), GETDATE(), 121),'-',''),':',''),' ',''),'.','')

关于sql - 强制 DATEPART 以固定长度输出的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296397/

相关文章:

sql - 将 SQL INSERT 与引用表合并

3个表的SQL查询检查任何一个表

mysql - 跨多行的 WHERE 条件

sql - 列与列之间的模糊匹配

sql - 在一个存储过程中输入缺失的月份并计算运行总计

sql-server - 选择 SQL Server 数据类型以获得最大速度

sql - 修改配置单元查询以强制超过 1 个 reducer

sql - 如何将两个不同查询的结果相乘

sql - 在 SSIS 的查找中使用变量

ssis - 无法在 SSIS 2012 中显示 Visual Studio Tools for Application 编辑器