繁体   English   中英

有没有更简单的方法来获得两位数的年份?

Is there a simpler method for getting the two digit year?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

编辑:强制使用 2008 R2

我需要将两位数的年份附加到发票号(为简单起见,我使用了测试变量)。 以前我只需要附加月份和日期,但客户现在要求输入两位数的年份。

我的方法: REPLACE + SUBSTRING + STR + YEAR(可变日期时间)

REPLACE((SUBSTRING(STR (Year(@Date),4),3,2)), ' ', '0')**

我的代码:

DECLARE @TestVariable AS VARCHAR(100),
@Date as datetime = GetDate()
SET @TestVariable = '1234' 
+ REPLACE(STR(MONTH(@Date), 2), ' ', '0') 
+ REPLACE(STR(DAY(@Date), 2), ' ', '0') 
+  REPLACE((SUBSTRING(STR (Year(@Date),4),3,2)), ' ', '0')

PRINT @TestVariable
4 个回复

您可以简化整个过程,而不仅仅是年份部分。 使用 FORMAT,您可以轻松完成此操作。

DECLARE @TestVariable AS VARCHAR(100) = '1234' 
    , @Date as datetime = GetDate()

Select @TestVariable + FORMAT(@Date, 'MMddyy')

老实说,不要再使用 2 位数的年份了; 吸取上世纪错误的教训,使用4位数。

如果你“不得不”,那么你可以使用带有样式代码的CONVERT ,然后用空字符串替换字符:

DECLARE @TestVariable varchar(100) = '1234',
        @Date datetime = GETDATE();

SELECT @TestVariable + REPLACE(CONVERT(varchar(8),@Date, 1),'/','');
select replace(convert(varchar(20),@date,1)'/','') --or any other you need

查看文档

我会回应其他人的观点“你真的必须使用两位数的年份”吗? 但如果你必须这样做,我喜欢这种东西

set @TestVariable = '1234'
    + right('0' + cast(month(@date)      as varchar(2)), 2)
    + right('0' + cast(day(@date)        as varchar(2)), 2)
    + right('0' + cast(year(@date) % 100 as varchar(2)), 2);

为了讨论一般方法,我使用right('0', «something», 2)作为将填充到两个位置的方法,使用cast(«something» as varchar(2))来获取字符串一个数字(因此隐式转换不只是添加零和相关的日期部分),最后是year(@date) % 100以获得日期的最后两位数。

2 日期为两位数的年份

如果出于某种原因将日期10.10.61 (DD.MM.YY)转换为as.Date(date, format="%d.%m.%y") ,则会将其转换为2061 -10-10 。 是否有一种优雅的方法可以纠正此问题,或者我必须手动将其切成薄片并在前面加上“ 19”吗? 我还尝试了Zoo程 ...

3 Pandas - 从日期中获取两位数的年份

我在 Pandas DataFrame 中有一个日期列,它显示了未来合约到期的日期。 我需要使用该信息创建一个新列,其名称为我的后台测试人员接受。 我需要它的格式是: 我知道如何获取month_code,我需要帮助弄清楚如何获取此列的 2_digit_year。 这就是到期列的样子,默认情况下 ...

4 SimpleDateFormat中的两位数年份

也许这个问题很愚蠢,但是我没有找到让我满意的答案。 我有一个像这样的SimpleDataFormat: 如果我尝试解析一个日期,例如: 10/10/15 那么Date结果是针对15年的,而不是2015年的。 为什么parse在这种情况下有效? 我期待一个ParseEx ...

5 NSDateFormatter的两位数年份无效

我有一个10.4样式的日期格式化程序应用于NSTextFieldCell。 我调用setTwoDigitStartDate:(尝试同时使用纪元日期和“引用”日期),但是当我键入带有两位数年份的日期时,它将年份设置为0009而不是2009。 标题: 执行: 我是否缺少明显的 ...

6 PHP用两位数年份转换日期

我从xml文件中检索一个具有两位数字年份的日期,例如“ dd / mm / yy”。 我如何将其更改为“ yyyymmdd”格式。 谢谢你的帮助 这是我尝试过的方法,但是我得到的日期是01/01/1970: ...

2016-05-02 16:06:15 2 2353   php/ date
8 如何根据两位数的开始年份来计算当前学年?

我正在一个学校的网络项目上工作,我需要从他/她的唯一注册号中了解特定学生所在的年份。 注册号看起来像UXXEEXXXX ,其中前两个XX代表用户加入学校的年份的后两位数字, EEX代表部门,后三个XXX代表学生的序列号(根据时间)他在注册时。 例如,在U08EE1117 , U代表本 ...

9 从年份中删除前两位数字-Postgresql

我有一张表,其中有年份,术语作为字段。 表中的当前值采用以下格式: 我使用以下代码无法成功: 我得到以下结果: 我想运行一个查询,以这种格式获取结果: 请给我一些关于如何在postgresql中实现此目标的指示。 谢谢 ...

10 在Ruby中将两位数年份转换为四位数年份

我有像"84", "03"等字符串,我想转换为Date对象,但Date.new只将扩展的4位数年份作为参数。 我知道这很简单,但我不想重新发明这个轮子。 有没有这样做的事情? 在标准Ruby或ActiveSupport中。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM