【问题标题】:Concatenate two date parts连接两个日期部分
【发布时间】:2015-01-04 23:52:07
【问题描述】:

我正在尝试基于我们使用的票务系统构建报告。我对 SQL 很陌生,只是想了解它,但我目前面临的问题是试图将两个字段加入一个日期。表格中的数据显示为Month_NumberYear_Number

我需要与日期时间字段进行比较,看看它是否在日期范围之间。我已经搜索了相当多的关于将我拥有的两个字段连接到一个日期中,但不幸的是没有完成。

【问题讨论】:

  • 这是用于什么类型的数据库引擎? SQL 的方言很重要,因为一些引擎有真正的日期数据类型,而另一些则没有。在常见的数据库引擎中,日期操作非常不标准。

标签: sql datetime concatenation converter


【解决方案1】:

您可以简单地为您的月份和日期部分连接。

declare @month varchar(10);
declare @year varchar(10)

set @month = 5
set @year = 2014

你可以选择任何你认为是最好的

select @month+'-1-' +@year as Your_Date 
select '1-'+@month+'-' +@year as Your_Date 
select @year+'-'+@month+'-1' as Your_Date 

输出

5-1-2014
1-5-2014
2014-5-1

要从 SQL 表中检索日期,您可以这样做

select month_number+'-1-' +year_number as Your_Date 
from table_name

如果你想改变显示输出的风格那么你可以使用Convert函数

【讨论】:

  • 我建议使用国际日期格式。 m-d-y 仅在某些地区(包括美国)有效,但在欧洲,d-m-y 更为常见。为了安全起见,请使用国际标准 yyyy-mm-dd。 IE。 @year + '-' + @month+'-1-' as Your_Date
  • 请注意我上面关于日期格式的评论与 display 格式无关,它是关于数据库引擎对字符串的解释。完全避免这种类型的字符串连接并使用直接日期函数可能是一个更好的主意。例如DateSerial等。但是这样的函数的存在将取决于数据库引擎。
猜你喜欢
  • 2015-11-09
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
  • 2018-12-19
  • 2015-06-29
  • 1970-01-01
相关资源
最近更新 更多