Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果日期介于(类似于静态日期)条件之间,则SQL添加新的时间戳_Sql_Postgresql_Datetime - Fatal编程技术网

如果日期介于(类似于静态日期)条件之间,则SQL添加新的时间戳

如果日期介于(类似于静态日期)条件之间,则SQL添加新的时间戳,sql,postgresql,datetime,Sql,Postgresql,Datetime,因此,如果记录属于这种情况,我需要在结果集中添加一个时间戳 例如: 使用今天的日期“07-06-2011”作为与日期时间的比较,如果记录在2011年3月10日和4月11日的时间戳之间,我需要向结果集添加时间戳 使用时间戳“08-01-2011”作为与日期时间的比较,如果记录在2011年4月10日和5月11日之间,我需要向结果集添加时间戳 等等 在语法和如何计算具体日期方面有困难,有什么想法吗 运行日期为“07-06-2011”的示例数据 7月份的任何日期都有效,但2011年3月10日和20

因此,如果记录属于这种情况,我需要在结果集中添加一个时间戳

例如:

  • 使用今天的日期“07-06-2011”作为与日期时间的比较,如果记录在2011年3月10日和4月11日的时间戳之间,我需要向结果集添加时间戳

  • 使用时间戳“08-01-2011”作为与日期时间的比较,如果记录在2011年4月10日和5月11日之间,我需要向结果集添加时间戳

等等

在语法和如何计算具体日期方面有困难,有什么想法吗

运行日期为“07-06-2011”的示例数据

  • 7月份的任何日期都有效,但2011年3月10日和2011年4月11日应保持不变,直到8月份。那么应该是接下来的两个月

伪查询:

SELECT date_feild, CASE
    WHEN date_field BETWEEN (three months ago on the 10th) AND (two months ago on the 11th)
    THEN NOW() AS new_date_feild
END
FROM tbl_name
WHERE other_conditions
我想我想知道如何以这种格式获取这些日期:

  • 三个月前的10号
  • 两个月前的11号
更新:

我编造了一个混乱的问题,其他人能帮忙吗

SELECT TO_DATE(
    TEXTCAT(
        TEXTCAT(
            TEXTCAT(
                date_part('YEARS', CURRENT_DATE - INTERVAL '3 MONTHS'),
            '-'),
        date_part('MONTHS', CURRENT_DATE - INTERVAL '3 MONTHS')),
    '-10'),'YYYY-MM-DD') AS previous_date,
TO_DATE(
    TEXTCAT(
        TEXTCAT(
            TEXTCAT(
                date_part('YEARS', CURRENT_DATE - INTERVAL '3 MONTHS'),
            '-'),
        date_part('MONTHS', CURRENT_DATE - INTERVAL '3 MONTHS')),
    '-10'),'YYYY-MM-DD') + INTERVAL '1 MONTH' + INTERVAL '1 DAY' AS next_previous_date

尝试使用DateTime,或者只使用Date。比较起来比较容易。我自己也有过类似的问题,尽管参与程度要小得多

这里有一个指向不同方式和效率的简单链接:

从中获取java中的当前日期也相当容易,尽管我花了很长时间才弄清楚。我是这样做的:

//Get current DateTime
    java.util.Date javaDate = new java.util.Date();
    long javaTime = javaDate.getTime();
    java.sql.Date sqlDate = new java.sql.Date(javaTime);
    java.sql.Time sqlTime = new java.sql.Time(javaTime);
    String dateTime = sqlDate.toString() + " " + sqlTime.toString();

这有点奇怪,但sql似乎能更好地处理这一问题。

好吧,这就是我所拥有的,但我对它并不满意:

SELECT TO_DATE(
    TEXTCAT(
        TEXTCAT(
            TEXTCAT(
                date_part('YEARS', CURRENT_DATE - INTERVAL '3 MONTHS'),
            '-'),
        date_part('MONTHS', CURRENT_DATE - INTERVAL '3 MONTHS')),
    '-10'),'YYYY-MM-DD') AS previous_date,
TO_DATE(
    TEXTCAT(
        TEXTCAT(
            TEXTCAT(
                date_part('YEARS', CURRENT_DATE - INTERVAL '3 MONTHS'),
            '-'),
        date_part('MONTHS', CURRENT_DATE - INTERVAL '3 MONTHS')),
    '-10'),'YYYY-MM-DD') + INTERVAL '1 MONTH' + INTERVAL '1 DAY' AS next_previous_date

可能想解释一下你的日期格式(我们不尽相同)——最后一个日期是8月1日还是1月8日?我不明白你的意思“向resultset添加时间戳——预期输出的示例会有所帮助。ok添加了一些示例数据和伪查询。我想我想把datetimestamp转换成这种格式:三个月前的10号,你的描述中没有错误吗?它不应该是“在一个月的11号和下个月的10号之间”(对于这两个范围)?现在的情况是,2011年4月10日和2011年4月11日这两个日期不太清楚该怎么办,因为它们都属于这两个范围(除非边界日期应该被排除在各自的范围之外).是的,我想我在示例中得到了向后的日期,但逻辑应该是sameI抱歉,但这没有任何帮助,为什么在可以使用SQL的情况下使用Java?忽略Java部分,用DateTime文件替换时间戳文件。SQL可以处理与这些数据的比较。另一个链接:嗨,瑞安,谢谢你的努力。我已经用一个伪查询更新了我的问题,以便更好地解释我在这里想做的事情:。我想你可以试着把日期时间转换成数字(使用+0),然后减去3/2个月的值,我想那是300000000。但是你必须担心不同的年份。我会在另一个程序中这样做,我认为sql可能太死板了。感谢您的不懈努力,您为MySQL提供的链接,我正在运行PostgreSQL。不过,我添加了一个查询来获取所需的日期,我可以将其用于案例条件。只是在寻找一种更有效的方法。再次感谢你们的努力
SELECT TO_DATE(
    TEXTCAT(
        TEXTCAT(
            TEXTCAT(
                date_part('YEARS', CURRENT_DATE - INTERVAL '3 MONTHS'),
            '-'),
        date_part('MONTHS', CURRENT_DATE - INTERVAL '3 MONTHS')),
    '-10'),'YYYY-MM-DD') AS previous_date,
TO_DATE(
    TEXTCAT(
        TEXTCAT(
            TEXTCAT(
                date_part('YEARS', CURRENT_DATE - INTERVAL '3 MONTHS'),
            '-'),
        date_part('MONTHS', CURRENT_DATE - INTERVAL '3 MONTHS')),
    '-10'),'YYYY-MM-DD') + INTERVAL '1 MONTH' + INTERVAL '1 DAY' AS next_previous_date