Мне нужно найти последний день месяца в следующем формате:
"2013-05-31 00:00:00:000"
Кто угодно, пожалуйста, помогите.
Мне нужно найти последний день месяца в следующем формате:
"2013-05-31 00:00:00:000"
Кто угодно, пожалуйста, помогите.
Попробуйте этот вариант -
CREATE FUNCTION [dbo].[udf_GetLastDayOfMonth]
(
@Date DATETIME
)
RETURNS DATETIME
AS
BEGIN
RETURN DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @Date) + 1, 0))
END
Query:
DECLARE @date DATETIME
SELECT @date = '2013-05-31 15:04:10.027'
SELECT DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @date) + 1, 0))
Вывод:
-----------------------
2013-05-31 00:00:00.000
Я знаю, что этот вопрос был для SQL Server 2005, но я подумал, что упомянуть - с SQL 2012, теперь есть функция EOMONTH()
, которая получает последний день месяца. Чтобы получить его в формате, указанном исходным запросом, вам нужно нажать на datetime
.
SELECT CAST(eomonth(GETDATE()) AS datetime)
SQL Server 2012 представляет функцию eomonth
:
select eomonth('2013-05-31 00:00:00:000')
-->
2013-05-31
declare @date datetime;
set @date = getdate(); -- or some date
select dateadd(month,1+datediff(month,0,@date),-1);
dateadd(month,1+datediff(month,0,getdate()),-1)
Чтобы проверить запуск:
print dateadd(month,1+datediff(month,0,@date),-1)
Рассчитать последнюю дату месяца - довольно простой расчет -
Выход - 1374, Если вывод getdate() - "2014-07-23 19: 33: 46.850"
Выход - 1375, Если выход getdate() - "2014-07-23 19: 33: 46.850"
Вывод - '2014-08-01 00: 00: 00.000', Если выход getdate() - "2014-07-23 19: 33: 46.850"
Выход - '2014-07-31 00: 00: 00.000', Если выход getdate() - "2014-07-23 19: 33: 46.850"
Таким же образом расчета мы можем достичь - 1. Последняя дата следующего месяца 2. Последняя дата предыдущего месяца и так далее...
Я надеюсь, что эта статья поможет.
Выберите DATEADD (ДЕНЬ, - (ДЕНЬ (DATEADD (MONTH, 1, GETDATE()))), DATEADD (MONTH, 1, GETDATE()))
Это отлично работает в T-sql..
Замените GETDATE() запроса своим именем столбца.
TO FIND 1ST and Last day of the Previous, Current and Next Month in Oracle SQL
-----------------------------------------------------------------------------
SELECT
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE,-2))+1 FDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1)) LDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1))+1 FDCM,
LAST_DAY(SYSDATE)LDCM,
LAST_DAY(SYSDATE)+1 FDNM,
LAST_DAY(LAST_DAY(SYSDATE)+1) LDNM
FROM DUAL
http://php.net/manual/en/function.cal-days-in-month.php
Длина в днях выбранного месяца в данном календаре
<?php
$num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31
echo "There was $num days in August 2003";
?>