Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобразование даты. / 19 сообщений из 19, страница 1 из 1
06.08.2018, 14:27
    #39683747
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
Доброго дня. Помогите пожалуйста советом. Как преобразовать дату в формат "03-Mar-2018"?
У меня есть запрос, который объединяет кучу таблиц, но у всех разные форматы дат, а конечная программа, которая обрабатывает мой запрос воспринимает именно вот тот дебильный формат, который я описала выше.
В самой программе я использовала команду
Код: sql
1.
select sampleid, acqdate(strcat(DAY(DATEVALUE([loaddate]) from CORP


но в этом случае штука не срабатывает и SQL ругается. Точнее SQL-менеджемент не понимает, а программа ругается.
Самое интересное что если я жестко прописываю даты в скрипте - все работает идеально, но как только используются эти даты в фильтре, чтобы пользователь мог их менять - ничего не показывает.
Есть ли команда которая позволит трансформировать дату любого формата в вид "03-Mar-2018"?

На всякий случай скрипт ниже
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
SELECT CASE ROW_NUMBER() OVER(PARTITION BY pp.PROJECTCODE ORDER BY a.holeid)
           WHEN 1
           THEN pp.PROJECTCODE
       END AS x_project,
       CASE ROW_NUMBER() OVER(PARTITION BY pp.DESCRIPTION ORDER BY a.holeid)
           WHEN 1
           THEN pp.DESCRIPTION
       END AS x_project_desc,
       --pp.PROJECTCODE,pp.DESCRIPTION,
       a.HOLEID, 
       a.DrillLenght, 
       b.SendSample, 
       c.assay, 
       TakenSample, 
       [Depth_drill], 
       totalcut.Totalcutting, 
       geo2.toTOTAL2
FROM PROJECT pp
     LEFT JOIN
(
    SELECT dd.PROJECTCODE AS x_project, 
           dd.HOLEID, 
           SUM(CAST((CASE
                         WHEN name = 'totaldrilldepth'
                         THEN value
                     END) AS FLOAT)) AS DrillLenght
    FROM drillingdetail dd
    WHERE CAST([DRILLINGDATE] AS DATE) BETWEEN '20-jul-2018' AND '06-aug-2018'
    GROUP BY PROJECTCODE, 
             HOLEID
) a ON pp.PROJECTCODE = a.x_project
     LEFT JOIN
(
    SELECT s.PROJECTCODE AS x_project, 
           s.HOLEID, 
           COUNT(sd.sampleid) AS SendSample
    FROM SAMPLEDESPATCH sd
         LEFT JOIN DESPATCHSEND ds ON sd.DESPATCHNO = ds.DESPATCHNO
         LEFT JOIN sample s ON s.SAMPLEID = sd.SAMPLEID
    WHERE CAST([senddate] AS DATE) BETWEEN '01-aug-2018' AND '06-aug-2018'
    GROUP BY PROJECTCODE, 
             HOLEID
) b ON pp.PROJECTCODE = b.x_project
       AND a.HOLEID = b.HOLEID
     LEFT JOIN
(
    SELECT projectcode AS x_project, 
           holeid, 
           COUNT(sss) assay
    FROM
    (
        SELECT DISTINCT 
               s.sampleid AS sss, 
               PROJECTCODE, 
               HOLEID
        FROM cORPSAMPLEASSAY c
             LEFT JOIN sample s ON s.SAMPLEID = c.SAMPLEID
        WHERE CAST([LOADDATE] AS DATE) BETWEEN '01-aug-2018' AND '06-aug-2018'
    ) abc
    GROUP BY abc.PROJECTCODE, 
             abc.HOLEID
) c ON pp.PROJECTCODE = b.x_project
       AND b.HOLEID = c.HOLEID
     LEFT JOIN
(
    SELECT ss.PROJECTCODE AS x_project, 
           holeid, 
           COUNT(ts.sampleid) AS TakenSample
    FROM SAMPLEDETAILS ts
         LEFT JOIN sample ss ON ss.SAMPLEID = ts.SAMPLEID
    WHERE CAST((CASE
                    WHEN name = 'SampDateTaken'
                    THEN value
                END) AS DATE) BETWEEN '01-aug-2018' AND '06-aug-2018'
    GROUP BY ss.PROJECTCODE, 
             ss.HOLEID
) t ON pp.PROJECTCODE = t.x_project
       AND t.HOLEID = a.HOLEID
     LEFT JOIN
(
    SELECT projectcode AS x_project, 
           holeid, 
           SUM([Depth_dh]) AS [Depth_drill]
    FROM
    (
        SELECT sample.projectcode, 
               sample.holeid, 
               ROUND(MAX(sampto) - MIN(SAMPFROM), 2) AS [Depth_dh]
        FROM sample
             LEFT JOIN SAMPLEDETAILS ON sample.SAMPLEID = SAMPLEDETAILS.sampleid
        WHERE CAST((CASE
                        WHEN name = 'SampDateTaken'
                        THEN value
                    END) AS DATE) BETWEEN '01-aug-2018' AND '06-aug-2018'
        GROUP BY sample.sampleid, 
                 projectcode, 
                 HOLEID
    ) zz
    GROUP BY projectcode, 
             HOLEID
) z ON pp.PROJECTCODE = z.x_project
       AND z.holeid = b.HOLEID
     LEFT JOIN
(
    SELECT DISTINCT 
           holeid, 
           projectcode
    FROM holelocation
) hl ON hl.HOLEID = a.HOLEID
     LEFT JOIN
(
    SELECT DISTINCT 
           holeid, 
           Totalcutting = MAX(geolto) - MIN(geolfrom)
    FROM GEODETAILS
    WHERE name = 'Cutting_Date'
          AND CAST(VALUE AS DATE) BETWEEN '01-aug-2018' AND '06-aug-2018'
    GROUP BY holeid
) totalcut ON totalcut.HOLEID = hl.HOLEID
     LEFT JOIN
(
    SELECT holeid hole1, 
           ROUND((MAX(geolto) - MIN(geolfrom)), 2) toDAY1
    FROM GEODETAILS
    WHERE value BETWEEN '01-aug-2018' AND '06-aug-2018'
          AND name NOT LIKE '%core%'
          AND name NOT LIKE '%rqd%'
          AND name NOT LIKE '%cut%'
    GROUP BY holeid, 
             value
) geo1 ON geo1.hole1 = hl.HOLEID
     LEFT JOIN
(
    SELECT holeid hole2, 
           MAX(geolto) toTOTAL2
    FROM GEODETAILS
    WHERE name = 'Lith_RockName'
    GROUP BY holeid
) geo2 ON geo2.hole2 = hl.HOLEID
WHERE a.x_project IS NOT NULL
      OR b.x_project IS NOT NULL
      OR c.x_project IS NOT NULL
      OR --x.x_project is not null or
      t.x_project IS NOT NULL
      OR z.x_project IS NOT NULL
ORDER BY pp.DESCRIPTION;






Кажется у меня кривые руки...
...
Рейтинг: 0 / 0
06.08.2018, 14:31
    #39683749
Сергей Викт.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
katish444,

Код: sql
1.
select convert(varchar,getdate(),106)


в таком формате не подойдёт?
06 Aug 2018
...
Рейтинг: 0 / 0
06.08.2018, 15:54
    #39683790
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
Сергей Викт.katish444,

Код: sql
1.
select convert(varchar,getdate(),106)


в таком формате не подойдёт?
06 Aug 2018
ну, тогда уж так :
Код: sql
1.
select replace(convert(varchar(20),getdate(),106),' ','-')
...
Рейтинг: 0 / 0
07.08.2018, 08:11
    #39684043
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
komrad, спасибо большое! Сейчас попробую
...
Рейтинг: 0 / 0
07.08.2018, 08:21
    #39684044
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
komrad, блин, в менеджементе все так классно сработало, а гребанная БД не понимает команду
Код: sql
1.
replace

...
...
Рейтинг: 0 / 0
07.08.2018, 08:37
    #39684052
Сергей Викт.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
katish444,
что значит "не понимает"?

Приведите код и текст ошибки
...
Рейтинг: 0 / 0
07.08.2018, 09:44
    #39684066
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
Сергей Викт., это проблема программы БД в которой я работаю. Она не знает это слово, даже цветом не выделяет. Придется придумывать что-то другое...
...
Рейтинг: 0 / 0
07.08.2018, 11:23
    #39684129
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
katish444,

а что за программа, где вы можете писать код, который она выборочно транслирует в сиквел?
...
Рейтинг: 0 / 0
07.08.2018, 11:54
    #39684155
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
komrad,

мабуть, у нее Sybase?
синтаксис у них родственный, тока вместо replace там str_replace
...
Рейтинг: 0 / 0
07.08.2018, 11:55
    #39684156
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
katish444,

в replace все буквы английские? Точно?
...
Рейтинг: 0 / 0
07.08.2018, 12:08
    #39684168
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
Посетительkomrad,

мабуть, у нее Sybase?
синтаксис у них родственный, тока вместо replace там str_replace

а не, судя по другим постам, это какая-то софтина acQuire, которая, вероятно, претендует на кросс-платформенность
В связи с чем, синтаксис может транслироваться в СУБД не напрямую, а преобразовываться в зависимости от СУБД.

Мельком нагуглить ничего конкретного не удалось, доки походу доступны только по подписке.
...
Рейтинг: 0 / 0
07.08.2018, 14:24
    #39684267
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
katish444komrad, блин, в менеджементе все так классно сработало, а гребанная БД не понимает команду
Код: sql
1.
replace

...

ну, хорошо, давайте попробуем left/right ;)

Код: sql
1.
2.
3.
select left(convert(varchar(20),getdate(),106),2)+'-'
	+left(right(convert(varchar(20),getdate(),106),8),3)+'-'
	+right(convert(varchar(20),getdate(),106),4)
...
Рейтинг: 0 / 0
07.08.2018, 14:34
    #39684275
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
Посетительkomrad,

мабуть, у нее Sybase?
синтаксис у них родственный, тока вместо replace там str_replace
ну, тогда бы "SQL-менеджемент" бы к нему не подключился
полагаю, что это так названа SQL Server Management Studio (SSMS)
...
Рейтинг: 0 / 0
07.08.2018, 16:02
    #39684353
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
komradkatish444komrad, блин, в менеджементе все так классно сработало, а гребанная БД не понимает команду
Код: sql
1.
replace

...

ну, хорошо, давайте попробуем left/right ;)

Код: sql
1.
2.
3.
select left(convert(varchar(20),getdate(),106),2)+'-'
	+left(right(convert(varchar(20),getdate(),106),8),3)+'-'
	+right(convert(varchar(20),getdate(),106),4)



Научи лучше, страдалицу вьюшки писать.
...
Рейтинг: 0 / 0
08.08.2018, 06:34
    #39684564
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
komrad,
база данных acQuire-4, она на SQL, но он у нее какой-то урезанный, но при этом есть свои команды...
...
Рейтинг: 0 / 0
08.08.2018, 06:34
    #39684565
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
komrad,
КЛАСС!!!!!
Спасибо большущее
...
Рейтинг: 0 / 0
08.08.2018, 06:34
    #39684566
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
aleks222,
вьюшки это что?
...
Рейтинг: 0 / 0
08.08.2018, 06:40
    #39684567
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
Посетитель,

да, вы совершенно правы. БД на SQL, но при этом у нее куча своих команд, например acqdate(), которые конечно SQLменеджемент не знает, и наоборот.
у них кроме рекламы больше ничего и нет, все за деньги...
Код: html
1.
https://www.acquire.com.au/
...
Рейтинг: 0 / 0
08.08.2018, 06:41
    #39684568
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование даты.
РЕБЯТА! СПАСИБО ВСЕМ ОГРОМНОЕ!

получилось
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобразование даты. / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]